Asp.net 从启用AJAX的GridView中删除行时出错

Asp.net 从启用AJAX的GridView中删除行时出错,asp.net,ajax,gridview,Asp.net,Ajax,Gridview,我试图弄明白为什么我可以在gridview中编辑,但是我的delete命令会产生一个服务器错误 我在删除时的AJAX回发中收到的错误消息如下: 208 |错误| 500 |在插入、更新或删除操作期间,在实体上找不到名为“Member.fullname”的属性。检查以确保指定为绑定表达式的属性对数据源可用| 当我执行编辑命令时不会发生这种情况,该命令工作正常 我有3个实体(任务、成员、项目) 在我的Gridview中,为了显示任务表,我设置了模板字段,以显示用户友好的数据,而不是id号: &l

我试图弄明白为什么我可以在gridview中编辑,但是我的delete命令会产生一个服务器错误

我在删除时的AJAX回发中收到的错误消息如下:


208 |错误| 500 |在插入、更新或删除操作期间,在实体上找不到名为“Member.fullname”的属性。检查以确保指定为绑定表达式的属性对数据源可用|


当我执行编辑命令时不会发生这种情况,该命令工作正常

我有3个实体(任务、成员、项目)

在我的Gridview中,为了显示任务表,我设置了模板字段,以显示用户友好的数据,而不是id号:

<asp:GridView ID="TaskList" runat="server" DataSourceID="TaskSource" DataKeyNames="id" 
    AutoGenerateColumns="False">
    <Columns>
        <asp:TemplateField AccessibleHeaderText="Name" HeaderText="Name" >
            <EditItemTemplate>
                <asp:DropDownList ID="ddlMemberName" runat="server" DataSourceID="MemberSource" 
                    DataTextField="fullname" DataValueField="id" SelectedValue='<%# Bind("member_id") %>'>
                </asp:DropDownList>
            </EditItemTemplate>
            <ItemTemplate>
                <asp:Label ID="lblMemberName" runat="server" Text='<%# Bind("Member.fullname") %>'></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField AccessibleHeaderText="Task" HeaderText="Task">
            <EditItemTemplate>
                <asp:TextBox ID="txtMemberTask" runat="server" Text='<%# Bind("description") %>' 
                    TextMode="MultiLine"></asp:TextBox>
            </EditItemTemplate>
            <ItemTemplate>
                <asp:Label ID="lblMemberTask" runat="server" Text='<%# Bind("description") %>'></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" />    
    </Columns>
</asp:GridView>

我的EntityDataSources设置如下:

<asp:EntityDataSource ID="TaskSource"
    DefaultContainerName="webteamEntities" runat="server"
    ConnectionString="name=webteamEntities" EnableDelete="True"
    EnableFlattening="False" EnableInsert="True" EnableUpdate="True" 
    EntitySetName="Tasks" Include="Project, Member" />
<asp:EntityDataSource ID="MemberSource"
    DefaultContainerName="webteamEntities" runat="server"
    ConnectionString="name=webteamEntities"
    EnableFlattening = "False"
    EntitySetName="Members" />

那么,如果我的datakeynames=“id”为什么它甚至试图在删除时访问Member.fullname?即使如此…为什么我的编辑工作还不错


我遗漏了什么吗?

在项目模板中用Eval替换Bind不会有什么坏处。
绑定是双向的。Eval是单向的。因为您只在项目模板中显示数据,所以Eval就足够了。

在项目模板中用Eval替换Bind不会有什么坏处。 绑定是双向的。Eval是单向的。因为您只在项目模板中显示数据,所以Eval就足够了