我有我的網頁上的下列標記:刪除行的表
<asp:GridView ID="GridView" runat="server"
AutoGenerateDeleteButton="True"
<Columns>
<asp:TemplateField HeaderText="ID" Visible="false">
<ItemTemplate>
<asp:Label ID="lblID" runat="server" Text='<% #Eval("ID")%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
...
我試圖獲取文本字段的值來獲得該行的正確的ID,我想刪除了,但我不知道如何準確地做到這一點,我曾嘗試下面的代碼:
Protected Sub GridView_RowDeleting(sender As Object, e As System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles GridView.RowDeleting
Dim row As GridViewRow = GridView.Rows(e.RowIndex)
Dim ID As Integer = TryCast(row.FindControl("lblID"), TextBox).Text
...
但是點擊刪除按鈕生成的網頁上後,我只是得到錯誤:
"Object reference not set to an instance of an object."
Visual Studio將錯誤指向「TryCast」。 我找不到任何類似的例子,不明白髮生了什麼,如果有人有更好的想法獲得該ID值也可以工作?
這段代碼是絕對錯誤的:'TryCast(row.FindControl(「lblID」),TextBox).Text'。使用'TryCast'的重點在於它可能會失敗,你可能會得到'Nothing',所以直接訪問結果的成員是錯誤的。如果你知道演員陣容會成功,並且可以安全地訪問這樣的成員,那麼你應該使用'DirectCast',否則你應該首先測試TryCast的結果,並且只有在它不是'Nothing'時才使用它。 – jmcilhinney