1

我创建了一个 datagridview 并将每列的排序模式属性设置为自动。然后,我将 datagridview 与列表绑定,并尝试按升序或降序排序,但两者都不适用于我的 datagridview 列。

我的示例代码如下。

    using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace PBAttendance
{
    public partial class frmFormTest : Form
    {
        public frmFormTest()
        {
            InitializeComponent();
        }

        private void frmFormTest_Load(object sender, EventArgs e)
        {
            tempDataList tmplist = new tempDataList();
            for(int i=0; i<10; i++)
            {
                tempData tmp = new  tempData();
                tmp.Name=i.ToString();
                tmplist.Add(tmp);
            }


            dataGridView1.Columns[0].DataPropertyName = "Name";
            BindingSource bs = new BindingSource();
            bs.DataSource = tmplist;
            dataGridView1.DataSource = bs;
        }
    }
    public class tempData
    {
        string name = null;

        public string Name
        {
            get { return name; }
            set { name = value; }
        }

    }
    public class tempDataList : List<tempData>
    {
    }
}
4

1 回答 1

0

默认情况下,List 在绑定到 DataGridView (DGV) 时不支持排序。请参阅如何实现 DataGridView 的自动排序?对于可行的解决方案。我的是使用BindingListView使代码像bs.DataSource = new BindingListView<tempData>(tmplist);.

只是对样式和语法的附加说明,因为看起来您已经习惯了 Java,并且存在一些差异:

  • 类名是 PascalCase (例如TempDataList,尽管在您提供的代码段中仅使用 没有缺点var tmplist = new List<tempData>()
  • 局部变量可以是任何形式,但通常是驼峰式(例如tmpList,尽管使用 Visual Studio 的智能感知,没有理由在变量名称中包含类型)。
  • 子类通常附加其基类的名称,例如TestForm而不是,尽管匈牙利符号 ( ) 在文件名和扩展基类库的类上frmFormTest仍有一些优势。frmTest(不过,在大多数情况下,这些优点并没有扩展到变量名:它bool isFormValidated比. 更好bool bValid。)
  • 关于properties,尤其是不需要支持字段的自动属性,只需执行( spublic string Name {get; set;}的默认值为)。如果您需要默认值,请使用只读属性( ) 并在构造函数中设置其值,否则您可以使用支持字段。stringnullpublic string Name {get; private set;}

我并没有指出这些是个混蛋(如果我冒犯了我很抱歉);几年前这些对我来说是有用的指针,也许还不熟悉 C# 的其他人会发现它们很有用。另外,请注意样式可以自动检查(并修复,例如使用 ReSharper 或 CodeRush)。

最后,.net 上最好的书,尤其是对于中级程序员,是Cwalina 和 Abrams 的框架设计指南(无论您是否正在设计框架)。

于 2013-07-30T19:00:39.530 回答