2016-10-07 48 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()方法時,我正在努力的印象是,我只需要填充字段,我知道我想要可編輯;顯然並非如此。

相關問題