0

グリッドビューで更新を試みていますが、別のテーブルからの「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();

編集しようとすると、databinding エラーで、serviceArea の定義が見つからないことが示されます。

次の方法でこれを行うことはできますか:

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

どんな助けでもいいでしょう、ありがとう。

4

1 に答える 1

0

グリッドビューでデータを編集する場合、匿名型は不変であるため使用できません。プレーンUsers を gridview に送信すると、データを変更できましたが、現在は変更できません。グリッドビューに表示するデータを保持するクラス (DTO またはビュー モデルと呼びます) を作成して、それらを編集できるようにする必要があります。

これは、変更をコミットするときに、変更された結果を元のユーザーに書き戻す必要があることを意味します。

于 2013-02-13T09:18:34.580 に答える