我一直在努力寻找答案。我有一个页面显示不在gridview中但通过样式div的记录。我已设法为每条记录创建一个按钮。
Imports sc
Imports sq
Imports System.Data
Partial Class _Default
Inherits System.Web.UI.Page
Dim c As New sc
Dim q As New sq
Public IsAdmin As String = "0"
Private Sub _Default_PreRender(sender As Object, e As EventArgs) Handles Me.PreRender
c.ReadS(q.IsAdminStr)
If c.sqldr.Read Then IsAdmin = "1"
c.con.Close()
If IsAdmin = "1" Then admin.Visible = True
c.FillDS(q.CurrStatStr)
For Each dr As DataRow In c.sqldt.Rows
systems.Controls.Add(New LiteralControl("<div class=""system""><table width=""100%""><tr><td width=""50%"" style=color:#00a0d0>"))
systems.Controls.Add(New LiteralControl(dr("system")))
systems.Controls.Add(New LiteralControl("</td><td width=""50%"" align=""right"" style=color:" & dr("colourhex") & ">" & dr("status")))
systems.Controls.Add(New LiteralControl("</td></tr>"))
systems.Controls.Add(New LiteralControl("</table>"))
If dr("status").ToString <> "Running" Then
systems.Controls.Add(New LiteralControl("<hr><table width=""100%""><tr><td>" & dr("comments") & "</td></tr></table>"))
End If
If IsAdmin = "1" Then
systems.Controls.Add(New LiteralControl("<div class=""sysadmin"">"))
Dim btn As New Button
btn.CommandArgument = dr("id")
btn.Text = "Update"
btn.CssClass = "btn"
AddHandler btn.Click, AddressOf btn_click
systems.Controls.Add(btn)
systems.Controls.Add(New LiteralControl("</div>"))
End If
systems.Controls.Add(New LiteralControl("</div>"))
Next
End Sub
Public Sub btn_click(ByVal sender As Object, ByVal e As EventArgs)
Dim btn As Button = CType(sender, Button)
Response.Redirect("Subscribe.aspx?id=" & btn.CommandArgument)
MsgBox(btn.CommandArgument)
End Sub
End Class
我添加了response.redirect只是为了测试它,但这不起作用。如何获取我添加的按钮,以执行与按下的按钮的记录ID相关的任何操作。
希望这对你有意义。
提前致谢。 (如果其中一些格式不正确,我道歉。我仍然是堆栈溢出的新手。)
答案 0 :(得分:0)
数据绑定时,您可以使用CommandArgument
属性:
btn.CommandArgument = id
然后在您的点击事件中:
Response.Redirect("Subscribe.aspx?id=" & btn.CommandArgument)
答案 1 :(得分:0)
我使用list(无论如何)以这种方式管理你的控件。将新控件添加到列表中,然后从列表对象中添加单击处理程序。您将拥有指向该单个函数或子函数的所有项。然后你就像你做直播一样。
你正在做的是重复使用相同的变量btn,因为你没有保持对象本身的工作。这就是你制作清单的原因。比阵列更容易管理。使btn列表(按钮)成为班级的顶部。不要忘记创建列表,然后才能添加它。 Btn =新列表(按钮)
您可以设置每个按钮的名称以确定哪个记录
答案 2 :(得分:0)
我想我已经怀疑了。它似乎与上面的代码完美配合,因为我已将它移动到页面加载事件而不是预渲染。
感谢您的帮助。