FineUI 官方论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

本论坛已关闭(禁止注册、发帖和回复)
请移步 三石和他的朋友们

FineUI首页 WebForms - MVC & Core - JavaScript 常见问题 - QQ群 - 十周年征文活动

FineUI(开源版) 下载源代码 - 下载空项目 - 获取ExtJS - 文档 在线示例 - 版本更新 - 捐赠作者 - 教程

升级到 ASP.NET Core 3.1,快、快、快! 全新ASP.NET Core,比WebForms还简单! 欢迎加入【三石和他的朋友们】(基础版下载)

搜索
查看: 6015|回复: 8
打印 上一主题 下一主题

Grid RowDataBound绑定事件

[复制链接]
跳转到指定楼层
楼主
发表于 2012-7-14 11:44:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 渔歌 于 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;
           
        }
实际与期望的运行结果:上述代码实现后应该全部的按钮不能用
截图:


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
沙发
 楼主| 发表于 2012-7-14 12:07:20 | 只看该作者
怎么没人处理啊
板凳
 楼主| 发表于 2012-7-15 00:47:37 | 只看该作者
还是没人处理啊
地板
发表于 2012-7-17 05:29:16 | 只看该作者
渔歌 发表于 2012-7-15 00:47
还是没人处理啊

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

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


你这个和楼主不是同一个问题,你要先确认下数据源是不是表格,否则dataitem就不是datarowview
6#
发表于 2012-7-17 09:30:34 来自手机 | 只看该作者
你这个问题其实很有代表性,不是控件问题,是使用不当造成的。rowdatabound是数据绑定后的事件,在第一行设置enabled属性时其值已经渲染过了,所以从第二行才生效。正确的做法是使用prerowdatabound,或者类似AppBox做权限控制时使用的predatabound事件都行
7#
发表于 2012-7-18 01:43:06 | 只看该作者
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的值是对的,可是无法设置正确的结果,请大神指导一下是否有错的地方
8#
 楼主| 发表于 2012-7-18 07:17:39 | 只看该作者
sanshi 发表于 2012-7-17 09:30
你这个问题其实很有代表性,不是控件问题,是使用不当造成的。rowdatabound是数据绑定后的事件,在第一行设 ...

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

我主要就是根据列值判断按钮是否能用 和你的需求基本上是一样的
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|FineUI 官方论坛 ( 皖ICP备2021006167号-1 )

GMT+8, 2024-11-24 16:21 , Processed in 0.047963 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表