Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not IsPostBack Then
LoadGrid
End If
End Sub
Sub LoadGrid()
Dim rstData As DataTable =
MyRst("SELECT ID, Description FROM tblBut ORDER BY ID")
Dim rstFlatTable As New DataTable
rstFlatTable.Columns.Add("B1")
rstFlatTable.Columns.Add("B2")
rstFlatTable.Columns.Add("B3")
Dim iColumns As Integer = 3 ' number of columns
Dim iColPtr As Integer = 0 ' our colum ptr
Dim NewRow As DataRow = rstFlatTable.NewRow
For Each OneRow As DataRow In rstData.Rows
If iColPtr < iColumns Then
NewRow(iColPtr) = OneRow("Description")
Else ' start a new row
rstFlatTable.Rows.Add(NewRow)
iColPtr = 0
NewRow = rstFlatTable.NewRow
NewRow(iColPtr) = OneRow("Description")
End If
iColPtr += 1
Next
' add last row straggler
rstFlatTable.Rows.Add(NewRow)
GridView1.DataSource = rstFlatTable
GridView1.DataBind()
End Sub
型 按钮单击事件代码如下:
Protected Sub B1_Click(sender As Object, e As EventArgs)
Dim btn As Button = sender
Label1.Text = $"button click value = {btn.Text}"
Dim gRow As GridViewRow = btn.NamingContainer
Label2.Text = $"Row index click = {gRow.RowIndex}"
End Sub
Public Function MyRst(strSQL As String) As DataTable
' general get any data from SQL
Dim rstData As New DataTable
Using conn As New SqlConnection(My.Settings.TEST4)
Using cmdSQL As New SqlCommand(strSQL, conn)
conn.Open()
rstData.Load(cmdSQL.ExecuteReader)
rstData.TableName = strSQL
End Using
End Using
Return rstData
End Function
1条答案
按热度按时间kkbh8khc1#
对于这种类型的代码,在大多数情况下使用repeater是有意义的。但是,让我们尝试使用GridView。
所以,说这个标记:
字符串
然后要填充的代码是这样的:
型
按钮单击事件代码如下:
型
所以,运行时的结果是这样的:
的数据
使用中继器也会相当不错。
对上面的唯一添加是行数据绑定事件中的一小段代码,以隐藏最后一行上的额外按钮。
在上面,我使用了一个“helper”例程,因为我很快就厌倦了输入代码来基于给定的SQL创建一个表。所以,这个helper例程是这样的:
型
可爱按钮的样式是这样的:
型