【问题标题】:c# How to create a SortableBindingList from a List<T>c# 如何从 List<T> 创建一个 SortableBindingList
【发布时间】:2015-09-03 14:25:12
【问题描述】:

我有一个填充 DataGridView 的对象列表(所有字符串),但是我无法使用列标题进行排序。我一直在阅读 SortableBindingList 以解决问题,但遗憾的是,由于我才学习代码几天,我无法理解如何实现它。任何让我再次行动的建议将不胜感激(请尽量保持简单)。

这是我目前的代码

{
public class Product
{
    public string itemCode;
    public string description;
    public string currentCount;
    public string onOrder;

    public string ItemCode
    {
        get
        {
            return itemCode;
        }
        set
        {
            itemCode = value;
        }
    }
    public string Description
    {
        get
        {
            return description;
        }
        set
        {
            description = value;
        }
    }
    public string CurrentCount
    {
        get
        {
            return currentCount;
        }
        set
        {
            currentCount = value;
        }
    }
    public string OnOrder
    {
        get
        {
            return onOrder;
        }
        set
        {
            onOrder = value;
        }
    }
}


{
class Program
{
    public static List<Product> itemList = new List<Product>();
    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main()
    {
        //Reads csv file
        var filestream = new FileStream(@"c:\StockFile\stocklist.csv", FileMode.Open,
        FileAccess.Read, FileShare.ReadWrite);
        var file = new StreamReader(filestream, Encoding.UTF8, true, 128);
        string lineOfText;

        bool firstLine = true;
        while ((lineOfText = file.ReadLine()) != null)
        {

            if (!firstLine)
            {
                // splits the values        
                string[] elements;
                Product newItem = new Product();
                elements = lineOfText.Split(',');
                newItem.itemCode = elements[0];
                newItem.description = elements[1];
                newItem.currentCount = elements[2];
                newItem.onOrder = elements[3];

                // add to list
                itemList.Add(newItem);
            }
            else
                firstLine = false;
        }
        //loads grid
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new Form1());


        //Output to file
        using (TextWriter tw = new StreamWriter(@"C:\StockFile\stocklist.csv"))
        {
            tw.WriteLine("Item Code,Item Description,Current Count,On Order");
            foreach (Product newItem in itemList)
            {
                tw.WriteLine(newItem.ItemCode + "," + newItem.Description + "," + newItem.CurrentCount + "," + newItem.OnOrder);

            }
        } 
    }
}


{
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }
    //Binds data to Grid
    private void Form1_Load(object sender, EventArgs e)
    {
        var source = new BindingSource();
        source.DataSource = Program.itemList;
        dataGridView1.DataSource = source;
        dataGridView1.AutoGenerateColumns = true;
        this.Controls.Add(dataGridView1);
        dataGridView1.Refresh();

        foreach (DataGridViewColumn column in dataGridView1.Columns)
        {

            dataGridView1.Columns[column.Name].SortMode = DataGridViewColumnSortMode.Automatic;
        }


        //Make Colomns read only
        foreach (DataGridViewColumn col in dataGridView1.Columns)
        {
            if (col.Name == "CurrentCount")
            {
                col.ReadOnly = false;
            }
            else
            {
                col.ReadOnly = true;
            }
        }
    }

}

【问题讨论】:

标签: c# list sorting datagridview


【解决方案1】:

这里有一个 SortableBindingList 的示例代码...

https://stackoverflow.com/a/40051526/2093531

将 List 转换为 SortableBindingList...

SortableBindingList<YourListType> sortableBindingList = new SortableBindingList<YourListType>(list);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-19
    • 1970-01-01
    • 2012-06-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多