【问题标题】:how to sort datagridview by displaymember and not by valuemember如何按显示成员而不是按值成员对datagridview进行排序
【发布时间】:2012-10-06 02:25:19
【问题描述】:

这是表1的内容

代码、描述
1、菠萝
2、香蕉
3、草莓
4、木瓜
5、苹果

它绑定到我的datagridview。 我想按它的显示成员而不是按值成员对其进行排序,所以它会像这样排序

代码、描述
5、苹果
2、香蕉
4、木瓜
1、菠萝
3、草莓

注意:描述只显示给我的数据网格视图,而不是代码字段。

编辑:

这是我的代码:

dim dgvColCmb as New System.Windows.Forms.DataGridViewComboBoxColumn
with dgvColCmb
   tmpDSet.Tables(0).DefaultView.Sort = tmpDSet.Tables(0).Columns(1).ColumnName & " DESC "
   Dim tmpDTable As DataTable = tmpDSet.Tables(0).DefaultView.ToTable
   .DataSource = tmpDTable
   .ValueMember = tmpDTable.Columns(0).ColumnName
   .DisplayMember = tmpDTable.Columns(1).ColumnName
   .ReadOnly = True
end with
dtg.columns.add(dgvColCmb)
dtg.DataSource = sDSet.Tables(0)

【问题讨论】:

    标签: sql-server vb.net datagridview datatable


    【解决方案1】:

    可以对绑定到datagridview的DataTable进行排序:

    table.DefaultView.Sort = "Description desc";
    DataTable sortedData = table.DefaultView.ToTable();
    

    【讨论】:

    • 那么......当我点击我的datagridview的标题时......它会按显示成员排序吗?
    【解决方案2】:

    尝试将DataTable 包装在DataView 中,然后将DataView 的Sort 属性设置为正确的列。您将使用 DataView 作为 DataSource,而不是 DataTable。像这样:

    Dim l_view As New DataView(sDSet.Tables(0))
    l_view.Sort = "Description" ' ...or... "Description DESC"
    dtg.DataSource = l_view
    

    【讨论】:

    • 请在此上下文中定义“它”。排序会保存吗?何时编辑排序?
    • 我的意思是,当我对表格进行排序(asc/desc)并编辑一些数据时,当我点击按钮时……记录会保存吗?
    • DataView 是可编辑的,所以我希望它可以。不过,没有什么比尝试更好的了。 (它不会保存到数据库中 - 但我想你知道)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-03
    • 2020-06-17
    • 1970-01-01
    • 1970-01-01
    • 2013-06-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多