2013-02-12 65 views
0

我想在gridview中做一個更新,所有工作都很好,直到我包含來自另一個表的'serviceArea'。從兩個表Gridview編輯

這是我的查詢。

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> 

任何幫助將是一件好事謝謝。

+0

您的上一個查詢是否返回純粹'User's? – 2013-02-12 19:01:15

+0

是的,gridview工作正常,當我選擇一行來編輯我得到的錯誤'code'DataBinding:'<> f__AnonymousType9'5 [[System.Int32,不包含屬性名稱'ServiceArea'。'code' – StudentRik 2013-02-13 09:09:24

回答

0

如果你想在gridview中編輯數據,你不能使用匿名類型,因爲它們是不可變的。當你發送普通User到gridview你可以修改數據,但現在你不能。您必須創建一個類(稱之爲DTO或查看模型)來保存您在gridview中顯示的數據,以便編輯它們。

這意味着當您提交更改時,您還必須將修改後的結果寫回原始用戶。

+0

我迷失了你的答案。但它一切正常,直到我決定包含u.tbl_ServiceArea.ServiceArea,這是唯一的問題。如果我在網格視圖中包含ddl,該網格視圖會在網格打開並使用選定值時填充。更好的主意? – StudentRik 2013-02-13 09:29:37

+0

好的,你可能應該選擇ServiceArea的一個屬性(例如'u.tbl_ServiceArea.ServiceArea.code'),因爲ServiceArea是一個對象,而不是原始值。但是,如果您希望數據可編輯,則不能使用匿名類型。 – 2013-02-13 09:36:20