DataGrid DataBindings Winforms

时间:2017-07-26 11:05:17

标签: c# winforms data-binding datagrid

DataGrid DataBindings错误

class Test1
{
   public DataTable table1 = new DataTable();
   public BindingSource sr = new BindingSource();
}

class Test2
{

    Test1 ta =new Test1();

    DataTable table1 = new DataTable();
    table1.Columns.Add("Dosage", typeof(int));
    table1.Columns.Add("Drug", typeof(string));
    table1.Columns.Add("Patient", typeof(string));
    table1.Columns.Add("Date", typeof(DateTime));

    table1.Rows.Add(25, "Indocin", "David", DateTime.Now);
    table1.Rows.Add(50, "Enebrel", "Sam", DateTime.Now);
    table1.Rows.Add(10, "Hydralazine", "Christoff", DateTime.Now);
    table1.Rows.Add(21, "Combivent", "Janet", DateTime.Now);
    table1.Rows.Add(100, "Dilantin", "Melanie", DateTime.Now);

    ta.table1 = table1 ;

   datagridview dgv = new datagridview();
   dgv.AutoGenerateColumns = true ;
   dgv.DataBindings.Add("DataSource",ta,"table1");
}

上面的代码给出了“无法绑定到DataSource.Parameter名称上的属性或列table1:dataMember”。 。我在这里犯了什么错误,我没有得到它。可以帮助我吗?

2 个答案:

答案 0 :(得分:0)

直接使用DataSource属性绑定数据源,如

dgv.AutoGenerateColumns = false;
dgv.DataSource = ta.table1;

根据您发布的代码,您传递的对象数据源是错误的,它必须是ta.table1而不仅仅是ta

   dgv.DataBindings.Clear();
   dgv.AutoGenerateColumns = false;
   dgv.DataBindings.Add("DataSource",ta.table1,"DataSource");

同时将以下行更改为

DataTable table1 = new DataTable("table1");

有关详细信息,请参阅MSDN文档https://msdn.microsoft.com/en-us/library/b6y3aby2(v=vs.110).aspx#Examples

答案 1 :(得分:0)

或者,您始终可以创建对象列表并绑定列表。使用您发布的参数(剂量,药物名称,患者姓名和时间)创建“患者”类。然后创建对象并将它们添加到列表中,最后将DGV数据源设置为等于该列表。以下是一些可以帮助您的示例代码:

DataGridView dgvPatient = new DataGridView();      //Create DGV
List<Patient> patientList = new List<Patient>();   //Create list
//Create and populate your object patient
Patient p1 = new Patient(###, "DrugName", "PatientName", DateTime);
patientList.Add(p1);                              //Add to list

dgvPatient.DataSource = typeof(Patient);
dgvPatient.DataSource = patientList;              //Assign to DGV

这是一种不同的方式去做,但过去对我来说效果很好。希望这有帮助