問題
我有一個ButtonColumn
編輯這樣定義行:爲什麼這裏DataGridItem的DataItem屬性爲null?
<asp:ButtonColumn DataTextField="job_code" ButtonType="LinkButton" HeaderText="Job Code"
CommandName="edit"></asp:ButtonColumn>
,並在OnItemCommand
處理程序DataGrid
我有這樣的代碼:
If e.CommandName = "edit" Then
Dim o As ListDataModel = CType(e.Item.DataItem, ListDataModel)
If o Is Nothing Then
Exit Sub
End If
...
End If
但e.Item.DataItem
是null
這裏。
我已經通過相關問題看起來並驗證了以下內容:
- 的
e.Item
的ItemType
設置爲ListItemType.Item
,因此應被允許容納DataItem
。這也與MSDN documentation jive。 - 我利用數據綁定- 見下面的代碼段。
- 我已經在
asp:DataGrid
上設置了DataKeyField
屬性,如下所示:DataKeyField="job_code"
。
數據綁定代碼(發生在搜尋法)
Using reader As SqlDataReader = cmd.ExecuteReader()
Dim list As List(Of ListDataModel) = New List(Of ListDataModel)
While reader.Read()
list.Add(New ListDataModel With
{
...
})
End While
dgSearchResults.DataSource = list
dgSearchResults.DataBind()
End Using
現在,Search
方法是一個input
按鈕的onserverclick
事件處理程序。該流程將是在用戶搜索結果,然後單擊命令按鈕中的一個編輯的行,因此Search
方法不會當OnItemCommand
處理器被解僱運行。
'DataItem'總是'Nothing'上回發。 ASP.NET將值存儲在ViewState中(如果啓用)。 – 2013-05-02 14:54:35
@TimSchmelter,所以當用戶點擊編輯ButtonColumn時它永遠不會有值? – 2013-05-02 14:57:48
不,只有在網格是數據綁定的情況下,但您可以使用'CommandArgument'來獲取ID。 – 2013-05-02 15:04:51