从两个表编辑Gridview

时间:2013-02-12 14:59:48

标签: asp.net linq-to-sql gridview

我正在尝试在gridview中进行更新,所有工作都很顺利,直到我包含来自另一个表的'serviceArea'。

这是我的查询。

var result = from u in _db.tbl_Users
             where u.UserName.Contains(searchQuery)
                   && searchQuery.Length > 0
                   && u.Deleted == false
             select new
             {
                 u.UserName,
                 u.Email,
                 u.IsAdmin,
                 u.ServiceAreaId,
                 u.tbl_ServiceArea.ServiceArea,
                 u.UserId,
             };

grd_User.DataSource = result;
grd_User.DataBind();

当我尝试编辑时,数据绑定错误说没有找到serviceArea的定义。

我可以通过以下方式做到这一点:

<EditItemTemplate>
      <asp:TextBox ID="txt_Val_ServiceArea" runat="server" Text='<%# Eval("ServiceArea") %>'></asp:TextBox>
 </EditItemTemplate>

任何帮助都会很好,谢谢。

1 个答案:

答案 0 :(得分:0)

如果要编辑gridview中的数据,则不能使用匿名类型,因为它们是不可变的。当您将纯User发送到gridview时,您可以修改数据,但现在您不能。您必须创建一个类(称之为DTO或视图模型)来保存您在gridview中显示的数据,以便您可以编辑它们。

这意味着您在提交更改时还必须将修改后的结果写回原始用户。