FineUI 官方论坛

标题: Grid模板列如何使用Eval和Bind绑定数据 [打印本页]

作者: 大石头    时间: 2012-4-1 22:42
标题: Grid模板列如何使用Eval和Bind绑定数据
今天开始使用ExtAspNet,发现一个也许可以改进的地方。
在Grid中,模板列绑定数据源得这样:
DataBinder.Eval(Container.DataItem, "IsEnable")而不能直接使用常用的Eval("IsEnable")

经查阅源码,可修改如下:
1,Grid.cs第2131行,row.DataBindRow();改为row.DataBind();,采用普通的绑定
2,GridRow.cs第194行,增加DataBindChildren重载:
protected override void DataBindChildren(){    base.DataBindChildren();    DataBindRow();}
原理如下:
Eval("IsEnable")其实是跟DataBinder.Eval(Container.DataItem, "IsEnable")是一样的,
只不过需要获取当前容易的数据项,也就是Container.DataItem。
而AspNet数据绑定的规则就是在每一个层次把当前数据项存入一个栈中,执行Eval时,实际上就是取这个栈顶元素来执行绑定。
关于这个栈,在DataBind的控制之下,开始就把当前容器的DataItem入栈,最后出栈,中间就是子控件的绑定啦,
所以这里需要重载 DataBindChildren


BTW:要是能获得CodePlex授权直接更新ExtAspNet就好了


作者: sanshi    时间: 2012-4-2 23:39
多谢,已经修正。

这种提交问题的方式就很好啊,或者Upload Patch
作者: 大石头    时间: 2012-4-3 13:07
sanshi 发表于 2012-4-2 23:39
多谢,已经修正。

这种提交问题的方式就很好啊,或者Upload Patch

这个只是一个很小的修改,我用来举例子。

我们团队还给Grid和DropDownList增加了数据源支持,可以通过DataSourceID直接支持ObjectDataSource。
支持多条件高级查询、分页、排序、删除等操作,这些都不需要编写任何代码。

估计老大你太忙,我们只能自己建立了一个分支线,你们发布新版本的时候,我们再合并源码。

要是能把这些源码直接提交到你们的svn就好了。




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