为什么我必须使用Eval来访问GridView的数据源's二级属性,而不是在ASP.NET中绑定

本文关键字:属性 二级 绑定 NET ASP Eval 访问 数据源 GridView 为什么 | 更新日期: 2023-09-27 17:50:32

假设我有一个GridView,它的数据源是一个Meeting类型的列表。每个Meeting对象都有一个Employee类型的属性,同时每个Employee都有一个Name属性。如果我想在GridView中显示Employee的名字,我应该这样做:

<asp:TemplateField>
    <ItemTemplate>
        <asp:Label Text='<%# Eval("Employee.Name") %>' runat="server" />
    </ItemTemplate>
</asp:TemplateField>

我的问题:为什么我不能用Bind做同样的事情?当尝试使用Bind显示属性的属性时,我得到一个编译错误。在这种情况下,使用Eval和Bind有什么不同?

英语不是我的第一语言,抱歉所有可能的错误。

为什么我必须使用Eval来访问GridView的数据源's二级属性,而不是在ASP.NET中绑定

如果你只需要从数据源在屏幕上显示数据,使用Eval就足够了

但是如果你需要在Grid中编辑数据,你必须使用Bind方法。因为它提供了双向绑定你可以从数据源读取数据也可以将数据写回来

如果您尝试在数据网格中编辑某些行,并希望在OnUdpdating事件中对类后面的代码进行一些更改,则Eval方法的数据将不可用,而不是Bind方法。

两者的区别在于Eval用于只读目的,Bind用于读/编辑目的。例如,Eval可用于绑定asp.net Label控件的Text属性,而Bind可用于绑定asp.net TextBox控件,以便可以对其进行编辑以满足某些要求。

更多信息见Mr.Darin Dimitrov回答