繁体   English   中英

如何在C#中将数据源设置为Datagridview控件

[英]How to set Datasource to a Datagridview Control in C#

这看起来很简单,但是我不知道该怎么做。 我不是C#中的数据绑定专家。

我有一个Class对象的列表(它是一个嵌套的Class),看起来像这样:

public class IntVector
{
    private string customerid;
    private string hash_id;
    private string client_name;
    private string mobile_no;
    private string address;

    //Table

    private List<CustomerInfo> customerinfo;
}

我有一个IntVector列表

private List<IntVector> UserData;

现在,如何将CustomerInfo设置为DatagridView控件的数据源,该控件是列表UserData的成员。

谢谢

首先,您必须以某种方式公开您的customerinfo列表(它现在是私有的,因此您不能从IntVector类外部获取它)。

如果是公开的:

BindingSource bs = new BindingSource(); 

int indexInUserDataList = 0;
bs.DataSource = UserData[indexInUserDataList].customerinfo;

datagridview.DataSource = bs;

另外,如果您想以编程方式修改列表,并希望将那些更改传播到控件,则可能要考虑使用BindingList而不是List(此处的区别是List <T>与BindingList <T>的优点/缺点 )。

您的CustomerInfo类是什么样的? 我假设您想将DataGridView的列绑定到CustomerInfo类的公共属性,例如:

class CustomerInfo 
{
   public int Id {get;set;}
   public string Name {get;set;}
   public string Address {get;set;}

   private string somePrivateData;
}

现在,如果将DataGridView中的AutoGenerateColumns设置为true,则将在DataGridView中自动创建3列“ Id”,“ Name”和“ Address”。 “ somePrivateData”将被忽略。

如果要自己定义列,则可以这样进行:

// make sure to do it before binding DataGridView control
datagridview.AutoGenerateColumns = false;

DataGridViewTextBoxColumn col1 = new DataGridViewTextBoxColumn();
col1.DataPropertyName = "Name";
col1.HeaderText = "Customer name";
col1.Name = "column_Name";
datagridview.Columns.Add(col1);

DataGridViewTextBoxColumn col2 = new DataGridViewTextBoxColumn();
col2.DataPropertyName = "Address";
col2.HeaderText = "Address";
col2.Name = "column_Address";
datagridview.Columns.Add(col2);

您需要将私人客户列表设置为公共:

public class IntVector
{
    private string customerid;
    private string hash_id;
    private string client_name;
    private string mobile_no;
    private string address;

    //Table

    public List<CustomerInfo> customerinfo;

}

private List<IntVector> UserData;

//Populate the UserData list here

然后可以将数据源设置为DataGridView,如下所示:

DataGridView.DataSource = UserData[0].customerinfo;

希望对您有帮助...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM