Mysql 删除表中的行

Mysql 删除表中的行,mysql,asp.net,vb.net,Mysql,Asp.net,Vb.net,我的网页上有以下标记: <asp:GridView ID="GridView" runat="server" AutoGenerateDeleteButton="True" <Columns> <asp:TemplateField HeaderText="ID" Visible="false"> <ItemTemplate> <asp:Label ID="lblID" ru

我的网页上有以下标记:

<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>
...
但是,在单击生成的网页上的“删除”按钮后,我发现错误:

“对象引用未设置为对象的实例。”

VisualStudio将错误指向“TryCast”。
我找不到任何类似的示例,也不明白发生了什么,如果有人对获取ID值有更好的想法,该值也会起作用?

您的
lblID
控件肯定是由该控件标记定义的标签:

<asp:Label ID="lblID" runat="server" Text='<% #Eval("ID")%>'></asp:Label>
您需要的是转换到
标签
,并在那里获取
文本
属性:

Dim ID As Integer = Convert.ToInt32(TryCast(row.FindControl("lblID"), Label).Text)

请注意,添加了
Convert.ToInt32
,因为标签控件的
Text
属性包含字符串值,因此必须强制转换为
Integer
。如果您不确定它是否返回
Nothing
,请改用
Integer.TryParse

您的
lblID
控件肯定是由此控件标记定义的标签:

<asp:Label ID="lblID" runat="server" Text='<% #Eval("ID")%>'></asp:Label>
您需要的是转换到
标签
,并在那里获取
文本
属性:

Dim ID As Integer = Convert.ToInt32(TryCast(row.FindControl("lblID"), Label).Text)

请注意,添加了
Convert.ToInt32
,因为标签控件的
Text
属性包含字符串值,因此必须强制转换为
Integer
。如果您不确定它是否返回
Nothing
,请使用
Integer.TryParse

这段代码绝对错误:
TryCast(row.FindControl(“lblID”),TextBox)。Text
。使用
TryCast
的全部意义在于它可能会失败,而您可能什么也得不到,因此直接访问结果的成员是错误的。如果您知道强制转换将成功,并且访问这样的成员是安全的,那么您应该使用
DirectCast
,否则您应该首先测试
TryCast
的结果,并且只有当它不是
无任何内容时才使用它。这段代码绝对错误:
TryCast(row.FindControl(“lblID”),文本框).Text
。使用
TryCast
的全部意义在于它可能会失败,而您可能什么也得不到,因此直接访问结果的成员是错误的。如果您知道强制转换将成功,并且访问这样的成员是安全的,那么您应该使用
DirectCast
,否则您应该首先测试
TryCast
的结果,并且只有在它不是
什么都没有的情况下才使用它。非常感谢您,我只是没有看到它。非常感谢您,我只是没看到。