我的目的是填充数据网格视图,并为每行添加一个带删除按钮的附加列。加载表单时,数据网格视图也应该填满。
但这是我不明白的部分。我使用RefreshOfficeList()
来填充DGV。如果我在表单加载事件上放置一个,则删除按钮的列将放在零索引中,或最左侧。如果我按下刷新按钮,它会移动第三个(最后一个)索引,或最右边的索引。如果我没有在加载事件中包含它,显然DGV将为空。如果我按下刷新按钮,它将以正确的顺序填充DGV,将删除按钮列放在第3个索引上。我想在Load
事件上加一个,但我希望它按正确的顺序排列。
需要帮助来理解这一点。
Private Sub frmOffice_Load(sender As Object, e As EventArgs) Handles MyBase.Load
sFormState = "Add"
'RefreshOfficeList()
End Sub
Private Sub btnRefresh_Click(sender As Object, e As EventArgs) Handles btnRefresh.Click
RefreshOfficeList()
End Sub
Private Sub RefreshOfficeList()
sql = "SELECT entry_no," & sOfficeCommittee & "from tbl_office order by office"
SelectQuery(3)
With dgvOffice
.Columns.Clear()
.DataSource = dt
.RowHeadersVisible = False
.Columns(0).Visible = False
.Columns(0).HeaderText = "entry_no"
.Columns(1).HeaderText = "Office - Committee"
.Columns.Insert(2, AddDGVButton())
.Refresh()
End With
End Sub
Private Function AddDGVButton() As DataGridViewButtonColumn
Dim dgvbutton As New DataGridViewButtonColumn()
With dgvbutton
.HeaderText = ""
.Text = "Delete"
.Name = "btn"
.UseColumnTextForButtonValue = True
.AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells
End With
Return dgvbutton
End Function
注意:如果有人想知道,SelectQuery()
只是获取数据表的子目录。