如何解决无法获取在 vb.net 中的 webforms 中单击了哪个动态添加的按钮
我已经为每个表格行动态添加了删除按钮。行的数据来自数据库,每行都有Id。所以我在每个按钮中添加了 Id 作为 commandArguments。但是在 eventHandler 方法中,我无法将发送者类型转换为按钮类型。 据我了解,当单击删除按钮时,发件人采用 .aspx 格式,无法将其类型转换为按钮。现在这里有什么解决方案?
这是为每一行添加按钮的代码。这段代码写在 Default.aspx.vb 的 Page_Load Sub 里面
Dim cell6 As TableCell = New TableCell()
Dim deleteButton As Button = New Button()
deleteButton.Text = "Delete"
deleteButton.CommandArgument = rd(0)
deleteButton.Attributes.Add("runat","server")
AddHandler deleteButton.Click,AddressOf deleteButton_Click
cell6.Controls.Add(deleteButton)
这是我的 eventHandler
Protected Sub deleteButton_Click(ByVal sender As Object,ByVal e As EventArgs)
Dim bt As Button = CType(sender,Button)
Dim rowIndex As Int64 = bt.CommandArgument
Dim con As New SqlConnection
Dim cmd As New SqlCommand
Try
con.ConnectionString = ConfigurationManager.ConnectionStrings("dbConn").ConnectionString
con.Open()
cmd.Connection = con
cmd.CommandText = "Delete From dbo.Person where Id = @rowId"
cmd.Parameters.Add(New SqlParameter("@rowId",rowIndex))
cmd.ExecuteNonQuery()
Catch ex As Exception
Finally
con.Close()
End Try
Response.Redirect("Default.aspx")
End Sub
在此方法中,Dim bt As Button = Ctype(sender,Button)
会引发异常。例外是
System.InvalidCastException: 'Unable to cast object of type 'ASP.default_aspx' to type 'System.Web.UI.WebControls.Button'.'
解决方法
我通常在尝试这样做时使用标签。
创建按钮时...
deletebutton.tag="yourID"
然后在处理程序中我可以调用
yourID=sender.tag
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。