C# 为什么我必须使用Eval访问数据源';是否在ASP.NET中绑定GridView的第二级属性?

C# 为什么我必须使用Eval访问数据源';是否在ASP.NET中绑定GridView的第二级属性?,c#,asp.net,gridview,eval,bind,C#,Asp.net,Gridview,Eval,Bind,假设我有一个GridView,其数据源是Meeting类型的列表。每个会议对象都有一个Employee类型的属性,同时每个Employee都有一个Name属性。 如果我想在GridView中显示员工的姓名,我应该执行以下操作: <asp:TemplateField> <ItemTemplate> <asp:Label Text='<%# Eval("Employee.Name") %>' runat="server" />

假设我有一个GridView,其数据源是Meeting类型的列表。每个会议对象都有一个Employee类型的属性,同时每个Employee都有一个Name属性。 如果我想在GridView中显示员工的姓名,我应该执行以下操作:

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

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


英语不是我的第一语言,对于所有可能出现的错误,我深表歉意。

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

但如果您需要编辑网格内的数据,则必须使用
Bind
方法。因为它提供了双向绑定,所以您可以从数据源读取数据,也可以写回数据

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

这两者之间的区别在于
Eval
用于只读目的,而
Bind
用于读取/编辑目的。例如,
Eval
可用于绑定asp.net标签控件的文本属性,而
bind
可用于绑定asp.net文本框控件,以便对其进行编辑以满足某些要求


有关更多信息,请参见答案

好的,我理解。我不想做任何更新,我只想显示数据。问题是,如果在前面的示例中使用Bind而不是Eval,则会出现编译错误。我认为如果我不想做任何更新,那么使用Eval和Bind没有区别,大多数情况下都是这样,但是如果我想显示属性的属性,那么在使用Bind时就会出现错误。你可以用