FineUI 官方论坛

标题: Grid RowDataBound绑定事件 [打印本页]

作者: 渔歌    时间: 2012-7-14 11:44
标题: Grid RowDataBound绑定事件
本帖最后由 渔歌 于 2012-7-14 12:12 编辑

ExtAspNet v3.1.8.2
浏览器:FireFox IE9

问题描述:Grid RowDataBound绑定事件存在严重BUG
在Grid1_RowDataBound控制按钮是否启用,代码实现Grid里面的按钮全部禁用,
但是第一行的还是可以使用
测试代码或示例:

protected void Grid1_RowDataBound(object sender, ExtAspNet.GridRowEventArgs e)
        {           
            LinkButtonField lbfAction1 = Grid1.FindColumn("lbfAction1") as LinkButtonField;
            LinkButtonField lbfAction2 = Grid1.FindColumn("lbfAction2") as LinkButtonField;
            lbfAction1.Enabled = false;
            lbfAction2.Enabled = false;
           
        }
实际与期望的运行结果:上述代码实现后应该全部的按钮不能用
截图:
[attach]818[/attach]


作者: 渔歌    时间: 2012-7-14 12:07
怎么没人处理啊
作者: 渔歌    时间: 2012-7-15 00:47
还是没人处理啊
作者: 西门吹雪    时间: 2012-7-17 05:29
渔歌 发表于 2012-7-15 00:47
还是没人处理啊

也遇到这样的问题,根据列值判断是否禁用,在绑定事件中写代码判断行值是否为空,可是不管是不是有数据都提示为空
protected void Grid1_RowDataBound(object sender, GridRowEventArgs e)
        {
DataRowView row = e.DataItem as DataRowView;

            if (row != null)
            {
//操作
}
}
作者: sanshi    时间: 2012-7-17 09:23
西门吹雪 发表于 2012-7-17 05:29
也遇到这样的问题,根据列值判断是否禁用,在绑定事件中写代码判断行值是否为空,可是不管是不是有数据都 ...


你这个和楼主不是同一个问题,你要先确认下数据源是不是表格,否则dataitem就不是datarowview
作者: sanshi    时间: 2012-7-17 09:30
你这个问题其实很有代表性,不是控件问题,是使用不当造成的。rowdatabound是数据绑定后的事件,在第一行设置enabled属性时其值已经渲染过了,所以从第二行才生效。正确的做法是使用prerowdatabound,或者类似AppBox做权限控制时使用的predatabound事件都行
作者: 西门吹雪    时间: 2012-7-18 01:43
sanshi 发表于 2012-7-17 09:23
你这个和楼主不是同一个问题,你要先确认下数据源是不是表格,否则dataitem就不是datarowview ...

谢谢大神!是我搞错了,数据源不是用的datatable。另外有个问题,我是在绑定事件中设置该行的windowfield的enabled属性,代码如下: protected void Grid1_RowDataBound(object sender, GridRowEventArgs e)
        {
            WindowField wf1 = (WindowField)Grid1.FindColumn("editField");
            LinkButtonField lf1 = (LinkButtonField)Grid1.FindColumn("deleteField");


            XTOrder row = e.DataItem as XTOrder;
            if (row.Status != "1")
            {
                //wf1.Enabled = false;
                wf1.ToolTip = "查看";
                wf1.Title = "查看";

                lf1.Enabled = false;
                lf1.ToolTip = "单据已经生效,不能删除";
            }
            else
            {
                wf1.ToolTip = "编辑";
                wf1.Title = "编辑";

                lf1.Enabled = true;
                lf1.ToolTip = "删除";
            }
        }
我跟踪的时候status的值是对的,可是无法设置正确的结果,请大神指导一下是否有错的地方
作者: 渔歌    时间: 2012-7-18 07:17
sanshi 发表于 2012-7-17 09:30
你这个问题其实很有代表性,不是控件问题,是使用不当造成的。rowdatabound是数据绑定后的事件,在第一行设 ...

如果用PRE这个事件DataKeys这里面存储的值就无法获取了
这个时候只能是便利DataTable了吗?
作者: 渔歌    时间: 2012-7-18 07:18
西门吹雪 发表于 2012-7-17 05:29
也遇到这样的问题,根据列值判断是否禁用,在绑定事件中写代码判断行值是否为空,可是不管是不是有数据都 ...

我主要就是根据列值判断按钮是否能用 和你的需求基本上是一样的




欢迎光临 FineUI 官方论坛 (https://fineui.com/bbs/) Powered by Discuz! X3.4