FineUI 官方论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

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

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

搜索
查看: 4841|回复: 2
打印 上一主题 下一主题

Grid模板列如何使用Eval和Bind绑定数据

[复制链接]
跳转到指定楼层
楼主
发表于 2012-4-1 22:42:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
今天开始使用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就好了

沙发
发表于 2012-4-2 23:39:55 | 只看该作者
多谢,已经修正。

这种提交问题的方式就很好啊,或者Upload Patch
板凳
 楼主| 发表于 2012-4-3 13:07:14 | 只看该作者
sanshi 发表于 2012-4-2 23:39
多谢,已经修正。

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

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

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

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

要是能把这些源码直接提交到你们的svn就好了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-5-2 23:51 , Processed in 0.045099 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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