找回密码
 立即注册

QQ登录

只需一步,快速开始

raul1122

中级会员

42

主题

155

帖子

980

积分

中级会员

积分
980

活字格认证微信认证勋章

raul1122
中级会员   /  发表于:2013-11-18 15:10  /   查看:11462  /  回复:11
Spread 6 如何实现如Excel一样可以灵活修改数据,实现批量保存数据?
具体操作是:    
1.绑定指定数据源后,可指定某几列允许修改,设置可修改后,可设置该列的数据类型,  如该列是下拉框的话,可绑定加载的数据源,修改时可进行选择 2.修改完毕后,点击按钮可保存修改的数据

11 个回复

倒序浏览
iceman
社区贡献组   /  发表于:2013-11-18 16:12:00
沙发
回复 1楼raul1122的帖子

1.可指定某几列允许修改
可以设置不可修改的列 Locked 属性为true;

  1. this.FpSpread1.Sheets[0].Columns[1].Locked = true;
复制代码


2.如该列是下拉框的话,可绑定加载的数据源,修改时可进行选择
我理解是需要指定 Combo 的数据源,是否正确?参考代码:

  1. protected void Page_Load(object sender, EventArgs e)
  2.         {
  3.             if (IsPostBack)
  4.             {
  5.                 return;
  6.             }

  7.             this.FpSpread1.Sheets[0].Columns[1].Locked = true;
  8.             FarPoint.Web.Spread.ComboBoxCellType cb=new FarPoint.Web.Spread.ComboBoxCellType();

  9.             DataSet dsType = GetDataSet();//testServer.SelOtherType();
  10.             FarPoint.Web.Spread.ComboBoxCellType oblistCell = new FarPoint.Web.Spread.ComboBoxCellType();
  11.             oblistCell.AllowWrap = true;
  12.             oblistCell.ShowButton = true;
  13.             oblistCell.DataSource = dsType;
  14.             oblistCell.DataTextField = "uType";
  15.             oblistCell.DataValueField = "uType";
  16.             oblistCell.UseValue = true;
  17.             oblistCell.AutoPostBack = true;
  18.             this.FpSpread1.Sheets[0].Columns[1].CellType = oblistCell;
  19.         }

  20.         /// <summary>
  21.         /// 设置数据源
  22.         /// </summary>
  23.         /// <returns>ComboBoxCellType 使用的数据源</returns>
  24.         private DataSet GetDataSet()
  25.         {
  26.             DataSet ds = new System.Data.DataSet();
  27.             DataTable name;

  28.             name = ds.Tables.Add("Heros");
  29.             name.Columns.AddRange(new DataColumn[] { new DataColumn("uType", typeof(string)), new DataColumn("ID", typeof(Int32)) });
  30.             name.Rows.Add(new object[] { "选项一", 0 });
  31.             name.Rows.Add(new object[] { "选项二", 1 });

  32.             return ds;
  33.         }
复制代码



3.修改完毕后,点击按钮可保存修改的数据
通过 UpdateCommand 获取,参考链接:http://blog.gcpowertools.com.cn/ ... et_usecommands.aspx
回复 使用道具 举报
raul1122
中级会员   /  发表于:2013-11-20 10:42:00
板凳
回复 2楼iceman的帖子

你好,请问一下,我现在绑定数据源,设置后对应的修改列和combox数据后,如何点击普通按钮进行数据修改?普通的button如何触发那个UpdateCommand事件?
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-11-20 15:05:00
地板
回复 3楼raul1122的帖子

ASP.NET button 可以设置其 OnClientClick 属性,调用一个前提的 JS 方法,在其中调用 Spread CallBack 方法即可:

  1.     <script type="text/javascript">
  2.         function SpreadCallBack() {
  3.             var spread = this.document.getElementById("FpSpread1");
  4.             spread.CallBack("Update");
  5.         }
  6.     </script>

  7. <asp:Button ID="Button1" OnClientClick="SpreadCallBack()" runat="server" Text="Button" />
复制代码
回复 使用道具 举报
raul1122
中级会员   /  发表于:2013-11-21 23:19:00
5#

Spread 6 切换单元格焦点时,更新该行数据

回复 4楼iceman的帖子

你好,我最终想实现这样的一个效果:
1.使用spread绑定指定数据源,指定某些列为可编辑列,如果有combox类型的数据,则加载对应的数据,
   列表数据加载采用的是按需加载,每次滑动鼠标加载指定的行数的方式。
目前 1 所述已经完成
2.修改某个单元格数据后,焦点切换单元格后,自动更新该行数据之前在winform的spread是有这种效果的,不知道web版能否实现


注:1. 原先是考虑点击按钮批量提交,后来觉得不太合适,如果客户下拉的数据很多,点击按钮提交更新会造成资源浪费,
       2.所以能否实现像winform那种切换单元格焦点时,更新该行数据
       3.不知道,你那边是否有更好的解决方案,期待你的答复
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-11-22 09:57:00
6#
回复 5楼raul1122的帖子

总结来说,你是想通过“EdtiStopped” 事件逐行更新数据对吗?
可以通过前台 EditStopped 事件来实现:

  1.                 function FpSpread1_EditStopped(event){
  2.                     var spread = this.document.getElementById(&quot;FpSpread1&quot;);
  3.                     spread.Update();
  4.                 }
复制代码
回复 使用道具 举报
raul1122
中级会员   /  发表于:2013-11-27 09:05:00
7#
回复 6楼iceman的帖子

你好,请求后台是怎么操作当前修改行的数据,更新的数据库中,前台这个EditStopped事件中,update()方法会执行什么操作?
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-11-27 09:44:00
8#
回复 7楼raul1122的帖子

update 方法会调用后台的 UpdateCommand 事件。获取当前行数据请参考:http://blog.gcpowertools.com.cn/ ... et_usecommands.aspx

需要手动写sql代码更新到数据库中。
回复 使用道具 举报
raul1122
中级会员   /  发表于:2013-12-2 10:14:00
9#

点击按钮提交更新,没有触发UpdateCommand

回复 6楼iceman的帖子

你好,我试过鼠标切换的时候,更新数据的方法,这种是可行的,但是速度很慢,一般修改一个单元格的内容后,切换焦点后,要等好几秒钟,表格才能反应过来。
我现在使用按钮更新时,这个前台触发的事件CallBack,没有触发UpdateCommand,只是刷新了一下页面,这个是怎么回事?
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-12-2 18:43:00
10#
回复 9楼raul1122的帖子

请问你指的 按钮 是 Spread CommandBar 工具条上的“更新(对号)”按钮,还是标准的按钮?

可以用 Fiddler 跟踪下 CallBack 的参数,看是否调用了 Spread Update 指令。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部