相关疑难解决方法(0)

C#:自定义DataGridView

我需要使用自然排序(在资源管理器中)对DataGridView进行排序,以便数字和文本(在同一列中)自然排序,而不是按字母顺序排序(以便"位置3"位于"位置20"之前,等等).我有一个DataGridView,我将DataView设置为DataSource.DataView包含一个DataTable,它是使用数据库中的某些值创建的.列类型是字符串.我有一个IComparer,它做了应有的事情,但我无法弄清楚如何使用它,因为我无法找到如何进行排序.DataGridView.SortCompare事件是完美的,因为它是数据绑定的,所以不起作用.DataView.Sort只接受具有列名和排序顺序的字符串.

很烦人.试图在StackOverflow上阅读相关问题,并搜索谷歌的很多和很多,但我真的找不到这个.只有我真正找到的东西是使用dataview的Sort(字符串)方法,因为它按字母顺序排序.

有没有人知道如何做到这一点没有太多麻烦?它应该是别人而不是我这个?我真的不想重新实现整个datagridview或dataview类,只是为了获得自定义排序...

更新:如果有人想知道,我仍然在寻找这个问题的好答案.虽然与此同时,我最终创建了自己的简单表类,然后手动将其提供给datagridview.覆盖SortCompare方法.有点烦人,但并不太难,因为我只需要显示值(没有编辑或任何东西),因此可以将所有内容转换为字符串.

c# sorting dataview datagridview

19
推荐指数
1
解决办法
2万
查看次数

如何对数据绑定DataGridView列进行排序?

我知道关于这个话题有很多问题.我经历了所有这些,但似乎没有任何帮助.

如何通过单击列标题进行排序?

我应该如何修改此代码来完成这项工作?

public partial class Form1 : Form
{

    public Form1()
    {

        List<MyClass> list = new List<MyClass>();
        list.Add(new MyClass("Peter", 1202));
        list.Add(new MyClass("James", 292));
        list.Add(new MyClass("Bond", 23));

        BindingSource bs = new BindingSource();
        bs.DataSource = list;

        DataGridView dg = new DataGridView();

        DataGridViewTextBoxColumn c = new DataGridViewTextBoxColumn();
        c.Name = "name";
        c.DataPropertyName = "Name";
        dg.Columns.Add(c);

        c = new DataGridViewTextBoxColumn();
        c.Name = "number";
        c.DataPropertyName = "Number";
        dg.Columns.Add(c);

        dg.DataSource = bs;

        this.Controls.Add((Control)dg);

    }

}

class MyClass:IComparable<MyClass>
{
    public string Name { get; set; }
    public …
Run Code Online (Sandbox Code Playgroud)

c# datagridview winforms

11
推荐指数
2
解决办法
2万
查看次数

标签 统计

c# ×2

datagridview ×2

dataview ×1

sorting ×1

winforms ×1