- 浏览: 2068870 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (1409)
- asp/asp.net学习 (241)
- oracle (10)
- delphi (295)
- java (27)
- pb (1)
- 每日点滴 (49)
- 学习方法 (40)
- 思想方面 (104)
- C语言 (5)
- C++ (1)
- 代码重构经验 (5)
- 软件工程 (3)
- 数据库 (99)
- 英语学习 (3)
- mysql (1)
- 该关注的网站或者网页 (42)
- 总结 (7)
- 要去做的事情 (33)
- 算法 (1)
- 网络方面 (29)
- 随感 (96)
- 操作系统 (36)
- UML (12)
- 常用工具的使用 (55)
- 脚本 (7)
- 汇编 (62)
- 数据结构 (2)
- 财务 (38)
- 语文作文 (16)
- 法律 (1)
- 股票 (88)
最新评论
-
devwang_com:
可以,学习了~~
列出文件夹下所有文件夹的树形结构--Dos命令 tree的使用 -
hvang1988:
不管用啊 frxrprt1.PreviewForm.Pare ...
fastReport预览时嵌入到别的窗体 -
00915132:
我也有这个疑问,非常 感 谢
left join加上where条件的困惑 --SQL优化 -
zhuyoulong:
学习了,高效读书
软件架构师要读的书 -
nTalgar:
非常感谢分享!
Application.ProcessMessages用法:
转自:http://www.cnblogs.com/kongxiangxin/archive/2009/06/25/1511239.html
DataBinder.Eval方法:
用途:在运行时使用反射来分析和计算对象的数据绑定表达式
重载列表如下:
public static object Eval(object container,string expression,string format);
假设后台代码如下:
Task task = new Task();
task.Title = "title1";
task.StartDate = DateTime.Now;
list.Add(task);
task = new Task();
task.Title = "title2";
task.StartDate = DateTime.Now.AddDays(1);
list.Add(task);
task = new Task();
task.Title = "title3";
task.StartDate = DateTime.Now.AddDays(2);
list.Add(task);
this.DataGrid1.DataSource = list;
this.DataGrid1.DataBind();
那么,常用的方式如下:
<Columns>
<asp:TemplateColumn HeaderText="开始日期">
<ItemTemplate>
<%#DataBinder.Eval(Container.DataItem,"StartDate","{0,d}")%>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:datagrid>
分析:
1.第一个参数传进去的是Container.DataItem,那么看一下Container.DataItem是什么东西:
新增一列,如下:
<ItemTemplate>
<%#Container.DataItem%>
</ItemTemplate>
</asp:TemplateColumn>
运行结果如下图:
所以,此时的Container.DataItem是Task类型的对象,所以可以直接把Task的属性名作为DataBinder.Eval的第二个参数。
2.再看一下Container是什么东西:
把分析1中的代码的变成下面的样子:
<%#Container %>
运行结果如下图:
所以,这里的Container是一个DataGridItem的对象。接着看看Container和DataItem有什么关系:
DataGridItem类有一个属性就叫做DataItem,msdn中的解释为“获取或设置由 DataGrid 控件中的 DataGridItem 对象表示的数据项。”也就是说是数据源中的每一条,也就是列表list中的每一条(Task对象)。
所以,对于DataBinder.Eval(Container.DataItem,"StartDate"),参数Container.DataItem确定了将从某一个Task对象里取数据,StartDate指定了待取数据的访问路径。所以,这句话这么写也是OK的,DataBinder.Eval(Container," DataItem.StartDate"),即Container指定了将从一个DataGridItem里取数据,数据的访问路径是DataItem.StartDate。
在msdn上没有找到Container的解释,把<%#Container %>放到DataGrid的TemplateColumn里,得到的是DataGridItem,把<%#Container %>放到一个table下面,得到是ASP.TaskList_aspx,所以猜测通过Container,可以引用到当前控件所在的容器(解释的不够准确)
3.那么,DataBinder.Eval的第一个参数不用Container可不可以呢?是可以的:
<%#DataBinder.Eval(PageTitle,"Text")%>,假设PageTitle是一个Label,那么这句话就绑定到了PageTitle的Text属性。
结论:
说了这么多,对于所关心的如下结构的数据源怎样通过DataBinder.Eval来绑定呢?
假设数据源如下:
Task task = new Task();
object[] arr = new object[3];
task.Title = "title1";
task.StartDate = DateTime.Now;
arr[0] = "nihao";
arr[1] = task;
arr[2] = "wohao";
list.Add(arr);
task = new Task();
task.Title = "title2";
task.StartDate = DateTime.Now.AddDays(1);
arr = new object[[3]];
arr[0] = "nihao";
arr[1] = task;
arr[2] = "wohao";
list.Add(arr);
task = new Task();
task.Title = "title3";
task.StartDate = DateTime.Now.AddDays(2);
arr = new object[3];
arr[0] = "nihao";
arr[1] = task;
arr[2] = "wohao";
list.Add(arr);
this.DataGrid1.DataSource = list;
this.Page.DataBind();
那么可以用下面的方法绑定到StartDate
所以,当我们再需要用反射去获得对象的某个属性值的时候,不需要再如下写代码了:
{
Type t = obj.GetType();
PropertyInfo info = t.GetProperty(propertyName);
return info.GetValue(obj,null);
}
上面这样写虽然可以达到效果,但是麻烦,而且对于处理person.Contact.Address这种属性比较麻烦。可以用DataBinder.Eval如下写:
{
return DataBinder.Eval(obj,propertyName);
}
发表评论
-
关于 字符串中的单引号, 在sql存储过程中的传输总结; 逗号分隔的多个变量提取方法.
2011-10-14 17:49 3403摘自:http://blog.csdn.net/nutia ... -
抓取网站内容 asp.net
2011-10-11 13:28 1052HttpWebRequest myReq ... -
两个DATASET合并成一个新的DATASET
2011-09-28 18:17 2525摘自:http://topic.csdn.net/t/2 ... -
VS设置使用哪个浏览器来调试网页
2011-08-30 16:57 1198摘自:http://zhidao.baidu.com/ques ... -
可使用js获取TREE的CheckBox
2011-08-20 12:32 1093摘自:http://www.uipower.com/bb ... -
正则表达式 验证邮箱
2011-06-02 18:14 2647正则表达式 摘自:http://www.alixixi.com ... -
未能加载程序集 App_Web_vdcnimdz”错误
2011-04-25 17:38 1600问题描述: 自己的一个WebGPS程序,只是拷到了别的 ... -
.net跳到指定错误页面兵显示详细的错误信息
2011-04-14 16:48 1257.net跳到指定错误页面兵显示详细的错误信息 摘自:h ... -
注册*.ocx控件
2011-04-14 11:23 947注册*.ocx控件 问题描述:本地的网站的bin目录下有了个 ... -
C# 读取文本文件的时候出现汉字乱码
2011-04-12 16:01 2473问题描述:C# 使用ReadAllText方法读取文本文件的时 ... -
VS 2008中如何显示代码的行号
2011-04-09 09:51 1247摘自:http://zhidao.baidu.com/ques ... -
VS.NET2008可以使用书签的功能
2011-04-08 17:19 1393摘自:http://blog.csdn.net/lmh_851 ... -
两个类库要添加引用才能使用
2011-04-02 13:57 1165两个类库要添加引用才能使用 ---------------- ... -
缓存 <%@ OutputCache Duration="6000" VaryByParam="none" %>
2011-04-02 10:53 1180在页首添加: <%@ OutputCache Durat ... -
FrameSet的加载顺序
2011-04-02 09:56 3906FrameSet的加载顺序是: (1) mainFrame ... -
Response.AddHeader “P3P”,”CP=CAO PSA OUR”
2011-04-01 18:01 2552摘自:http://my.donews.com/alor ... -
Hashtable 的使用
2011-03-31 09:36 8192011-3-31 Hashtable 的使用: ... -
google地图使用(二)
2011-03-30 10:30 13322011-3-291. 今天客户反映,说GOOGLE地图上的拖 ... -
GOOGLE地图
2011-03-29 18:31 8342011-3-291. 今天客户反映,说GOOGLE地图上的拖 ... -
此组中没有可用的控件 工具箱 vs2008
2011-03-29 09:20 2135问题描述: 此组中没有可用的控件 工具箱 vs2008 ...
相关推荐
`DataBinder.Eval` 是ASP.NET中用于在控件中绑定数据的一个非常重要的方法,它允许开发者在ASP.NET页面上动态地从数据源获取值并显示。本文将深入探讨 `DataBinder.Eval` 的基本使用方式,高效用法,以及如何实现...
在ASP.NET开发中,DataBinder.Eval是一个非常重要的方法,用于在控件绑定数据时从数据源中动态地获取和显示数据。这个方法是ASP.NET数据绑定表达式的一部分,广泛应用于GridView、Repeater、ListView等数据绑定控件...
在Asp.net开发中,DataBinder.Eval是一个非常常用的数据绑定方法,主要用于在控件中显示数据源中的字段值。本文将深入探讨DataBinder.Eval的用法,并提供多个示例来帮助理解。 1. 基本用法 DataBinder.Eval方法的...
本文将深入探讨两种常见的数据绑定方法:`DataBinder.Eval`和`Eval`,以及它们之间的区别。 `Eval`方法是在ASP.NET 2.0引入的简化数据绑定语法,它使得模板中的数据绑定更加简洁。`Eval`方法可以直接通过字段名来...
Eval方法与DataBinder.Eval一样可以接受一个可选的格式化字符串参数。缩短的Eval语法与DataBinder.Eval的不同点在于,Eval会根据最近的容器对象(例如DataListItem)的DataItem属性来自动地解析字段,而DataBinder....
2. 使用Eval()方法可以计算字符串,例如:<%# DataBinder.Eval(Container.DataItem, "[n]") %> 3. Eval()方法可以绑定字段,并实现自动编号,例如:<%# Container.DataItemIndex + 1%> 4. Eval()方法可以格式化字符...
在ASP.NET 1.x中,数据绑定表达式的标准形式是使用`DataBinder.Eval`方法,例如: ``` <%#DataBinder.Eval(Container,"DataItem.Name")%> ``` 而在ASP.NET 2.0中,同样的功能可以通过更简洁的语法实现: ``` <%#Eval...
d> 可能感兴趣的人:"> ... <%# DataBinder.Eval(Container.DataItem, "Name")%> <%# DataBinder.Eval(Container.DataItem, "Sex")%> <%# DataBinder.Eval(Container.DataItem, "myEmail")%> </td>
<td><%#DataBinder.Eval(Container.DataItem,"Activation")%> <td><%#DataBinder.Eval(Container.DataItem, "DealerId")%> <td><%#DataBinder.Eval(Container.DataItem, "UserId")%> <td><%#DataBinder.Eval...
**Eval()** 和 **DataBinder.Eval()** 是两种常用的数据绑定表达式,用于在ASP.NET中获取数据项的值。它们的主要区别在于,DataBinder.Eval() 提供了更多的灵活性和安全性。 1. **Eval()** 的基本用法: ```html ...
`DataBinder.Eval`是ASP.NET早期版本中使用的数据绑定方法,虽然在ASP.NET 2.0中引入了简化的`Eval`语法,但在某些场景下,可能还需要使用`DataBinder.Eval`来进行更复杂的操作,如格式化输出等。 **示例**: ```...
DataBinder.Eval(Container.DataItem,"starttime","{0:yyyy-M}") 7.显示时间所有部分,包括:年月日时分秒 收款时间" HeaderText="收款时间" DataFormatString="{0:yyyy-MM-dd HH24:mm:ss}"> </asp:BoundColumn> ...
<%# Bind(“Subject”) %> //绑定字段 <%# Container.DataItemIndex + 1%> //实现自动编号 <%# DataBinder.Eval(Container.DataItem, “[n]”)...# DataBinder.Eval(Container, “DataItem
<ItemStyle CssClass="dxgv"></...<asp:Label ID="lb_week_p" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.PLANTKEY") %>'> 宋体"> <asp:ListItem Selected="True" Value="">---- ...
# DataBinder.Eval(Container.DataItem,”fldName”) %>时,编译时将会出现 “DataBinder.Eval:“System.Data.DataRow”不包含名称为 fldName 的属性” 的错误 解决办法:将 <%# DataBinder...
这里使用`DataBinder.Eval`方法获取`DataItem`中的`begtime`属性值,并将其转换为`System.DateTime`类型,最后使用`ToShortDateString`方法格式化为短日期形式。 #### 6. 创建超链接 ```csharp // 创建超链接 CODE:...