Bind是双向绑定,Eval是单向绑定(只读)
1.eval是只读数据,bind是可更新的.
2.当对次表达式操作时候,必须用Eval 如<%# Eval("字段名").ToString().Trim() %>
2.若GridView中绑定列里面 设置 内容格式 DataFormateString ={0:d} ,则 必须把 属性 HtmlCode 设置为false,否则无法 起作用;
Eval 单向绑定:数据是只读的
Bind 双向绑定:数据可以更改,并返回服务器端,服务器可以处理更改后的数据,如存入数据库.
Bind支持读写是双向的;Eval是只能读数据,是单向的;
还有一点区别就是:如果在表达式进行操作的时候,只能用Eval,用Bind则表达式则没有效果;
下边举一例子:如果给GridView中内容字段中限制显示长度,超过五个字加省略号;
当用Bind 进行绑定表达式时:代码如下:
<ItemTemplate> <asp:Label ID="Label2" runat="server" Text='<%# Bind("ContactTitle").ToString().Length>5 ? Bind("ContactTitle").ToString().Substring(0,5)+"……":Bind("ContactTitle") %>' ></asp:Label> </ItemTemplate>
表达式无效,没有效果。
但改为Eval之后,效果就能正常显示
<ItemTemplate> <asp:Label ID="Label2" runat="server" Text='<%# Eval("ContactTitle").ToString().Length>5 ? Eval("ContactTitle").ToString().Substring(0,5)+"……":Eval("ContactTitle") %>' ></asp:Label> </ItemTemplate>