不使用gridview

时间:2017-09-14 20:51:34

标签: asp.net vb.net

我一直在努力寻找答案。我有一个页面显示不在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相关的任何操作。

希望这对你有意义。

提前致谢。 (如果其中一些格式不正确,我道歉。我仍然是堆栈溢出的新手。)

3 个答案:

答案 0 :(得分:0)

数据绑定时,您可以使用CommandArgument属性:

btn.CommandArgument = id

然后在您的点击事件中:

Response.Redirect("Subscribe.aspx?id=" & btn.CommandArgument)

答案 1 :(得分:0)

我使用list(无论如何)以这种方式管理你的控件。将新控件添加到列表中,然后从列表对象中添加单击处理程序。您将拥有指向该单个函数或子函数的所有项。然后你就像你做直播一样。

你正在做的是重复使用相同的变量btn,因为你没有保持对象本身的工作。这就是你制作清单的原因。比阵列更容易管理。使btn列表(按钮)成为班级的顶部。不要忘记创建列表,然后才能添加它。 Btn =新列表(按钮)

您可以设置每个按钮的名称以确定哪个记录

答案 2 :(得分:0)

我想我已经怀疑了。它似乎与上面的代码完美配合,因为我已将它移动到页面加载事件而不是预渲染。

感谢您的帮助。