2016-10-07 7 views
0

私はモデルバインディングを使用して、単一のint主キーを持つテーブルに対してGridViewを作成しています。ASP.NETモデルバインディング:UpdateMethodがデータキーを受け取っていません

<asp:GridView ID="gvTimesheet" runat="server" AutoGenerateColumns="false" 
     ItemType="BO.TimeSheet" AutoGenerateEditButton="true" AutoGenerateDeleteButton="true" 
     DataKeyNames="TimeSheetID" 
     SelectMethod="gvTimesheet_GetData" UpdateMethod="gvTimesheet_UpdateItem" 
     OnRowDataBound="gvTimesheet_RowDataBound"> 
<Columns> 
... // Note: TimeSheetID is NOT one of the columns here 

SelectMethodが正常に動作しますが、UpdateMethod

public void gvTimesheet_UpdateItem(int TimeSheetID) { 

は常にIDの値は0になります。パラメータの名前は、キーのモデルオブジェクトのプロパティと正確に一致するDataKeyNamesと一致します。すべてが正しいように見えます。

私はキーを非表示のBoundFieldとして追加しようとしましたが、それは何の違いもありませんでしたので削除しました。これは、DataKeyNames内にあるだけで十分です。

(RowDataBoundハンドラだけで、いくつかの他のフィールドのためのDropDownLists /コンボボックスのカップルを移入し、キーIDと全く何もしません。)

UpdateMethodに表示するためのキー値は失敗するだろう何?

答えて

0

私はそれを解決し、それは基本的なミスでした。私のSelectMethodはプライマリキー値を持つDataTableを取得していましたが、そのビジネスオブジェクトの、BO.TimeSheet.TimeSheetIDというプロパティを入力するのはではありませんでした。したがって、モデルオブジェクトはデフォルトの0の値を保持していました。

gvTimesheet_GetData()メソッドを記述したとき、私が編集可能にしたいと思っていたフィールドだけを埋めなければならないという印象の下で作業していたと思います。それは明らかにそうではありません。

関連する問題