找回密码
 立即注册

QQ登录

只需一步,快速开始

elwin

中级会员

27

主题

210

帖子

748

积分

中级会员

积分
748

活字格认证

[已处理] 数据绑定后加载

elwin
中级会员   /  发表于:2012-2-15 02:31  /   查看:9921  /  回复:13
版主你好:请教一下,我想实现这样一个功能,数据绑定加载后,可以锁定某些行,不可以编辑和删除,请问题如何实现?

13 个回复

倒序浏览
iceman
社区贡献组   /  发表于:2012-2-15 09:24:00
沙发

回复 1# elwin 的帖子

elwin 你好,
这个 Case 实现的方法为:通过 Rows.Locked 锁定该行,不可编辑实现,在 DeleteCommand 删除事件中判断行索引,从而判断是否删除。请参考代码:
  1.         protected void Page_Load(object sender, EventArgs e)
  2.         {
  3.             DataTable data = new DataTable();
  4.             DataColumn col1 = new DataColumn("1", typeof(System.String));
  5.             DataColumn col2 = new DataColumn("2", typeof(System.String));
  6.             data.Columns.Add(col1);
  7.             data.Columns.Add(col2);
  8.             data.Rows.Add("1", "1");
  9.             data.Rows.Add("2", "2");
  10.             this.FpSpread1.Sheets[0].DataSource = data;
  11.             this.FpSpread1.Sheets[0].Rows[0].Locked = true;
  12.             this.FpSpread1.Sheets[0].AllowDelete = true;
  13.         }
  14.         protected void FpSpread1_DeleteCommand(object sender, FarPoint.Web.Spread.SpreadCommandEventArgs e)
  15.         {
  16.             if (Convert.ToInt32(e.CommandArgument)==0)
  17.             {
  18.                 e.Handled = true;
  19.             }
  20.         }
复制代码
回复 使用道具 举报
elwin
中级会员   /  发表于:2012-2-15 10:13:00
板凳
版主你好,你的意思我理解,不过假如
this.FpSpread1.DataSource的数据源是MSSQL,有很多行,当然有会有一些逻辑,比如这行是我自己填写的,在其它人浏览这行记录是被锁定的,不允许修改和删除。
您上面提供的例子不能思路好象不对啊
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-2-15 10:38:00
地板

回复 3# elwin 的帖子

elwin 你好,不好意思,不是很明白 3# 的 Case。下面是我的理解和实现步骤。

1.Case 理解:我对这个 Case 理解为,绑定数据源后某些行是锁定的,这些锁定行是不能修改、删除的。

2.Case 实现:数据源中有 2 行,我们 Lock 索引为 0 的行,这样这行不能编辑。添加 FpSpread1_DeleteCommand 事件,在点击删除按钮时触发事件,在事件中判断删除行索引,如果为 0 ,那么不删除。
回复 使用道具 举报
elwin
中级会员   /  发表于:2012-2-15 11:57:00
5#

回复 4# iceman 的帖子

版主你好,可能我表达不清楚。
就是数据绑定之后,我需要对每一行数据进行判断,然后对某些行进行锁定,比如
第N行数据是没有权限去修改\删除的,那么我就把就N行进行锁定,如下:
this.FpSpread1.Sheets[0].Rows[N].Locked = true;

我的问题是,绑定之后,我如何对每一行数据进行读取和判断呢?或者这个锁定在数据绑定的时候发生?
有个事件DataBinding不知道能不能有帮助?
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-2-15 13:25:00
6#

回复 5# elwin 的帖子

elwin 你好,
可以在 Databinding 事件中通过 for 循环来遍历行,通过逻辑判断是否锁定,把锁定行索引存储在全局数组中, 在 DeleteCommand 事件中通过行索引判断是否删除。
回复 使用道具 举报
elwin
中级会员   /  发表于:2012-2-15 14:20:00
7#
感谢答复。我去尝试一下。
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-2-15 17:07:00
8#

回复 7# elwin 的帖子

:share:
回复 使用道具 举报
elwin
中级会员   /  发表于:2012-2-17 11:55:00
9#
问题解决。谢谢!
不过又发现新的问题,请教一下:
点删除铵钮后,如果删除不成功,spread显示同样少了一行。
能没有办法避免这个问题?
如果删除不成功,则spread显示没有变化,同时弹出对话框,提示用户删除失败?
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-2-17 12:01:00
10#

回复 9# elwin 的帖子

elwin 你好,

感谢你把问题反馈给我们,但是从描述中我们无法重现问题。

请能上传 Demo 到论坛,这样我们可以重现问题,做进一步的调查。谢谢合作。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部