C# 在c中创建datagridview表单#
我不熟悉c#和windows窗体应用程序。 现在,我想在表单中创建一个Datagridview,我想用业务对象的属性填充它的行。我遵循这个msdn页面中的示例:创建了自己的程序,但是没有得到与msdn示例中类似的结果,而是得到了一个包含三个空行的datagridview。我做错了什么?这是我的节目:C# 在c中创建datagridview表单#,c#,winforms,datagridview,C#,Winforms,Datagridview,我不熟悉c#和windows窗体应用程序。 现在,我想在表单中创建一个Datagridview,我想用业务对象的属性填充它的行。我遵循这个msdn页面中的示例:创建了自己的程序,但是没有得到与msdn示例中类似的结果,而是得到了一个包含三个空行的datagridview。我做错了什么?这是我的节目: using System; using System.Windows.Forms; public class Form3 : Form { private DataGridView da
using System;
using System.Windows.Forms;
public class Form3 : Form
{
private DataGridView dataGridView1 = new DataGridView();
private BindingSource bindingSource1 = new BindingSource();
public Form3()
{
this.Load += new System.EventHandler(EnumsAndComboBox_Load);
}
private void EnumsAndComboBox_Load(object sender, System.EventArgs e)
{
// Populate the data source.
bindingSource1.Add(new Test("bli", "bla", "blop", "ha", "ho", "he"));
bindingSource1.Add(new Test("bli", "bla", "blop", "ha", "ho", "he"));
// Initialize the DataGridView.
dataGridView1.AutoGenerateColumns = false;
dataGridView1.AutoSize = true;
dataGridView1.DataSource = bindingSource1;
// Initialize and add a text box column.
DataGridViewColumn column = new DataGridViewTextBoxColumn();
column.DataPropertyName = "Name1";
column.Name = "Name1";
dataGridView1.Columns.Add(column);
// Initialize and add a check box column.
column = new DataGridViewTextBoxColumn();
column.DataPropertyName = "Name2";
column.Name = "Name2";
dataGridView1.Columns.Add(column);
column = new DataGridViewTextBoxColumn();
column.DataPropertyName = "Name3";
column.Name = "Name3";
dataGridView1.Columns.Add(column);
column = new DataGridViewTextBoxColumn();
column.DataPropertyName = "Name4";
column.Name = "Name4";
dataGridView1.Columns.Add(column);
column = new DataGridViewTextBoxColumn();
column.DataPropertyName = "Name5";
column.Name = "Name5";
dataGridView1.Columns.Add(column);
column = new DataGridViewTextBoxColumn();
column.DataPropertyName = "Name6";
column.Name = "Name6";
dataGridView1.Columns.Add(column);
// Initialize the form.
this.Controls.Add(dataGridView1);
this.AutoSize = true;
this.Text = "DataGridView object binding demo";
}
#region "test object"
private class Test
{
private string test1;
private string test2;
private string test3;
private string test4;
private string test5;
private string test6;
public Test(string s1, string s2, string s3, string s4, string s5, string s6)
{
test1 = s1;
test2 = s2;
test3 = s3;
test4 = s4;
test5 = s5;
test6 = s6;
}
public Test()
{
test1 = "bla";
test2 = "bla";
test3 = "bla";
test4 = "bla";
test5 = "bla";
test6 = "bla";
}
public string Test1
{
get
{
return test1;
}
set
{
test1 = value;
}
}
public string Test2
{
get
{
return test2;
}
set
{
test2 = value;
}
}
public string Test3
{
get
{
return test3;
}
set
{
test3 = value;
}
}
public string Test4
{
get
{
return test4;
}
set
{
test4 = value;
}
}
public string Test5
{
get
{
return test5;
}
set
{
test5 = value;
}
}
public string Test6
{
get
{
return test6;
}
set
{
test6 = value;
}
}
}
#endregion
static class Program
{
[STAThread]
public static void Main()
{
Application.Run(new Form3());
}
}
}
您正在将列绑定到名为
Name
的属性(从1到6),但在您的对象中没有此类属性。将名称
更改为测试
。即
由此:
column = new DataGridViewTextBoxColumn();
column.DataPropertyName = "Name6";
column.Name = "Name6";
dataGridView1.Columns.Add(column);
为此:
column = new DataGridViewTextBoxColumn();
column.DataPropertyName = "Test6";
column.Name = "Name6";
dataGridView1.Columns.Add(column);
正如@noobobob建议的,移动你的
dataGridView1.DataSource = bindingSource1;
在方法的末尾,每列的“DataPropertyName”属性必须与正在计算的数据对象的属性名称匹配。所以,如果你只做一个这样的微小改变:
column.DataPropertyName = "Test1";
一切正常。应将
列.DataPropertyName
设置为在datasource类中指定的属性名称。试试这个:
column = new DataGridViewTextBoxColumn();
column.DataPropertyName = "Test1";
column.Name = "Test1";
dataGridView1.Columns.Add(column);
column = new DataGridViewTextBoxColumn();
column.DataPropertyName = "Test2";
column.Name = "Test2";
dataGridView1.Columns.Add(column);
column = new DataGridViewTextBoxColumn();
column.DataPropertyName = "Test3";
column.Name = "Test3";
dataGridView1.Columns.Add(column);
Florian,在这一行之后
dataGridView1.DataSource=bindingSource1
检查dataGridView1.DataBind()
方法是否可用..更改column.DataPropertyName=“NameX”;到column.DataPropertyName=“TestX”;解决了这个问题。Thankshaging column.DataPropertyName=“NameX”;到column.DataPropertyName=“TestX”;解决了这个问题。@FlorianHeld我很高兴它有帮助。您可以将给出的任何答案标记为已接受和/或向上投票;到column.DataPropertyName=“TestX”;解决了这个问题。