无法对datagridview进行排序

时间:2011-09-27 20:50:55

标签: c# sorting datagridview bindingsource

您好我无法按字母顺序排序我的datagridview

这就是我填充网格的方式:

 bs = new BindingSource();
                bs.DataSource = db.GetProducts.ToList();
                dgvInventory.DataSource = bs;

这就是我尝试排序网格的方式:

     private void toolStripButton3_Click_1(object sender, EventArgs e)
    {
        bs.Sort = "ID DESC, Name ASC";
        dgvInventory.DataSource = bs;
    }

当我按下按钮时没有任何反应 这两列是数据网格中的exsist

这是屏幕:

enter image description here

2 个答案:

答案 0 :(得分:5)

引自:http://msdn.microsoft.com/en-us/library/system.windows.forms.bindingsource.sort.aspx

  

为了支持排序,底层列表必须实现   IBindingList或IBindingListView接口。这种能力可以   通过SupportsSorting属性查询。多列排序是   当SupportsAdvancedSorting属性为true时可用。

您正在调用ToList()扩展方法,该方法将返回List<Product>,它不会支持其中任何一个接口,因此无法进行排序。

答案 1 :(得分:1)

当您拥有自定义对象时,您必须实现SortableBindingList。在互联网上搜索一下。这种行为的原因是底层源负责排序,而不是DataGridView。

此外,同样的问题:DataGridView Sort does not work