为什么Datagridview中的列会切换?

时间:2017-08-23 12:47:45

标签: vb.net visual-studio-2017

我的目的是填充数据网格视图,并为每行添加一个带删除按钮的附加列。加载表单时,数据网格视图也应该填满。

但这是我不明白的部分。我使用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()只是获取数据表的子目录。

0 个答案:

没有答案