displayindex datatable / dgv列不起作用

时间:2015-09-21 15:14:20

标签: vb.net datagridview datatable columnsorting

我通过Visual Studio表/列集合编辑器设置了一些数据表。遗憾的是,一旦你完成(没有上/下设施),MS似乎没有任何方式重新排序集合编辑器中的数据列。因此,我必须以编程方式重新排序我的列(在集合中按顺序排序)。

对此进行了大量阅读,对于我的生活,无法找到问题的根源。基本上,尽管下面的代码,数据列仍然在datagridview上显示无序。代码(删节):

Private Sub LoadTextStylesDGV()
    With _TextStylesDGV
        .DefaultCellStyle.Padding = New Padding(0, 5, 0, 5)
        .AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells
        .AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells
        .AllowUserToAddRows = False
        .AllowUserToDeleteRows = False
        .AllowUserToResizeColumns = True

        .Columns.Add(New DataGridViewComboBoxColumn With {.DataPropertyName = "TextAlign", .Visible = True,
                                              .Name = "TextAlign",
                                            .HeaderText = "TextAlign",
                                              .DataSource = MarqueeEditor._EnumDDContentAlign,
                                              .FlatStyle = FlatStyle.Flat,
                                              .AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells})
' And other column setups similar to above
' ....
    .DataSource = Global.CPWBAdmin.MarqueeEditor.MarqueeData.Tables("TextStyles")
        .MultiSelect = False
        .AllowUserToDeleteRows = False

        With .Columns("ID")
            .ReadOnly = True
            .DefaultCellStyle.BackColor = Color.LightGray
            .Visible = False
            .DisplayIndex = 0
            .Frozen = True
        End With

        With .Columns("Name")
            .DisplayIndex = 1
            .Frozen = True
            .DefaultCellStyle.BackColor = Color.Linen
        End With

        .Columns("RandomStyle?").DisplayIndex = 2

        With .Columns("Font")
            .ReadOnly = True
            .DefaultCellStyle.BackColor = Color.LightBlue
            .AutoSizeMode = DataGridViewAutoSizeColumnMode.None
            .DisplayIndex = 3
        End With

'.... other column display index settings

    .Columns("Stroke3LineJoin").DisplayIndex = 49
        .Columns("Stroke3Wrap").DisplayIndex = 50
        .Columns("TextAutoFit").DisplayIndex = 51
        'Sort:
        .Sort(_TextStylesDGV.Columns("Name"), System.ComponentModel.ListSortDirection.Ascending)
    End With
End Sub

我想知道DGV列是否在代码中的其他位置重新排序。当然 - 没有办法在表单显示之前进行逐步调试。已经浏览过代码但看不到任何明显的东西。有没有人有任何想法,因为这个杀了我!如果只有MS允许列集合重新排序。 :(

1 个答案:

答案 0 :(得分:0)

Oooops。没有足够的搜索!终于找到了解决方案:

dgvReservedStalls.AutoGenerateColumns = True
dgvReservedStalls.DataSource = clsReservedStalls.LoadDataTable()
dgvReservedStalls.AutoGenerateColumns = False

自动从DT生成列,然后释放它以重新排序列。有点模糊,MS ... :)

From here