第一次玩C#,DataGridView绑定数据源,显示不出来,请解答,谢谢!

xiaojinmao 2014-10-13 06:47:02
dataGridView是用设计器来设计的,里面字段如下:


代码在控件load函数中添加数据:
List<DataClass> dataSource = new List<DataClass>();
DataClass dc1 = new DataClass("1", "jacky", "male", "20", "2", "计算机");
DataClass dc2 = new DataClass("2", "rose", "female", "20", "2", "计算机");
dataSource.Add(dc1);
dataSource.Add(dc2);
this.dataGridView1.DataSource = dataSource;

结果显示的界面如下:


是不是我datagridview中设置的checkbox,button和combox的缘故呢?
我知道用循环是可以加入数据,现在我只想用数据绑定的方式,不知道如何做,求解答,谢谢!
...全文
1111 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaojinmao 2014-10-19
  • 打赏
  • 举报
回复
其实可以用List的,只是里面的属性字段值要和我定义的bean中的字段一致。
mysz_2361014883 2014-10-15
  • 打赏
  • 举报
回复
DataGridView绑定数据库显示数据示例 private void Form1_Load(object sender, EventArgs e) { SqlDataAdapter sda = new SqlDataAdapter(//创建SqlDataAdapter对象 "select * from tb_student", "server=WRET-MOSY7990FOT\\MRDLL;database=db_test;Trusted_Connection=true"); DataSet ds = new DataSet();//创建数据集DataSet对象 sda.Fill(ds);//调用SqlDataAdapter对象的Fill()方法填充数据集 dataGridView1.DataSource = ds.Tables[0];//将数据集绑定到DataGridView1控件 }
流浪若相惜 2014-10-14
  • 打赏
  • 举报
回复
我给你说一下原理: 首先定义一个DataTable,这个DataTable用于存储数据库信息。你可以将数据库得到的信息以xml格式发送给DataTable。 初始化表格可以类似定义:
 #region 初始化表格
            //创建数据表
            dataTable = new DataTable();
            dataTable.TableName = "record";

            //初始化绑定控件
            bindingSource = new BindingSource();
            bindingSource.DataSource = dataTable;
            //初始化表格
            MessageCheckdataGridView.AutoGenerateColumns = false;
            MessageCheckdataGridView.DataSource = bindingSource;


            //下面是添加列
            TextBoxColumnX = new DataGridViewTextBoxColumn();
            TextBoxColumnX.DataPropertyName = "Code";////获取或设置数据源属性的名称或与 DataGridViewColumn 绑定的数据库列的名称。
            TextBoxColumnX.HeaderText = "村编码";
            TextBoxColumnX.Name = "Code";//获取或设置列名
            TextBoxColumnX.Width = 130;
            MessageCheckdataGridView.Columns.Add(TextBoxColumnX);

            TextBoxColumnX = new DataGridViewTextBoxColumn();
            TextBoxColumnX.DataPropertyName = "Name";
            TextBoxColumnX.HeaderText = "村名";
            TextBoxColumnX.Name = "Name";
            TextBoxColumnX.Width = 100;
            MessageCheckdataGridView.Columns.Add(TextBoxColumnX);

            TextBoxColumnX = new DataGridViewTextBoxColumn();
            TextBoxColumnX.DataPropertyName = "SendTime";
            TextBoxColumnX.HeaderText = "发送时间";
            TextBoxColumnX.Name = "SendTime";
            TextBoxColumnX.Width = 180;
            MessageCheckdataGridView.Columns.Add(TextBoxColumnX);

            TextBoxColumnX = new DataGridViewTextBoxColumn();
            TextBoxColumnX.DataPropertyName = "Title";
            TextBoxColumnX.HeaderText = "标题";
            TextBoxColumnX.Name = "Title";
            TextBoxColumnX.Width = 180;
            MessageCheckdataGridView.Columns.Add(TextBoxColumnX);

            TextBoxColumnX = new DataGridViewTextBoxColumn();
            TextBoxColumnX.DataPropertyName = "Status";
            TextBoxColumnX.HeaderText = "状态";
            TextBoxColumnX.Name = "Status";
            TextBoxColumnX.Width = 100;
            MessageCheckdataGridView.Columns.Add(TextBoxColumnX);

            buttonColumn = new DataGridViewButtonColumn();
            buttonColumn.HeaderText = "操作";
            // buttonColumn.Text = "审核";
            //this.dataGridViewX1.Columns[5].DefaultCellStyle.NullValue = "删除"; 
            buttonColumn.Width = 100;
            MessageCheckdataGridView.Columns.Add(buttonColumn);
            #endregion
然后,可以将数据库查询结果以xml格式传递给DataTable,注:列DataPropertyName属性名称要和数据库相应字段名一致,否则无法创建与数据库的连接了就。 然后都xml就是了:
  dataTable.ReadXml(stringReader);
流浪若相惜 2014-10-14
  • 打赏
  • 举报
回复
我给你说一下原理: 首先定义datagridview,看你的显示应该是定义没有问题。 其次,你可以定义一个DataTable,这个DataTable用来获取数据库信息。 给你写个例子: #region 初始化表格 //创建数据表 dataTable = new DataTable(); dataTable.TableName = "record"; //这里的表名,字段名,必须要和服务器端的一致 //dataTable.Columns.Add("Name", typeof(String)); //dataTable.Columns.Add("Sex", typeof(String)); //dataTable.Columns.Add("Nation", typeof(String)); //初始化绑定控件 bindingSource = new BindingSource(); bindingSource.DataSource = dataTable; //DataTableX.TableName = "Remote"; //DataSetX.Tables.Add(DataTableX); //RemoteBindingSource.DataSource = DataSetX; //RemoteBindingSource.DataMember = "Remote"; //初始化表格 MessageCheckdataGridView.AutoGenerateColumns = false; MessageCheckdataGridView.DataSource = bindingSource; //下面是添加列 TextBoxColumnX = new DataGridViewTextBoxColumn(); TextBoxColumnX.DataPropertyName = "Code";////获取或设置数据源属性的名称或与 DataGridViewColumn 绑定的数据库列的名称。 TextBoxColumnX.HeaderText = "村编码"; TextBoxColumnX.Name = "Code";//获取或设置列名 TextBoxColumnX.Width = 130; MessageCheckdataGridView.Columns.Add(TextBoxColumnX); TextBoxColumnX = new DataGridViewTextBoxColumn(); TextBoxColumnX.DataPropertyName = "Name"; TextBoxColumnX.HeaderText = "村名"; TextBoxColumnX.Name = "Name"; TextBoxColumnX.Width = 100; MessageCheckdataGridView.Columns.Add(TextBoxColumnX); TextBoxColumnX = new DataGridViewTextBoxColumn(); TextBoxColumnX.DataPropertyName = "SendTime"; TextBoxColumnX.HeaderText = "发送时间"; TextBoxColumnX.Name = "SendTime"; TextBoxColumnX.Width = 180; MessageCheckdataGridView.Columns.Add(TextBoxColumnX); TextBoxColumnX = new DataGridViewTextBoxColumn(); TextBoxColumnX.DataPropertyName = "Title"; TextBoxColumnX.HeaderText = "标题"; TextBoxColumnX.Name = "Title"; TextBoxColumnX.Width = 180; MessageCheckdataGridView.Columns.Add(TextBoxColumnX); TextBoxColumnX = new DataGridViewTextBoxColumn(); TextBoxColumnX.DataPropertyName = "Status"; TextBoxColumnX.HeaderText = "状态"; TextBoxColumnX.Name = "Status"; TextBoxColumnX.Width = 100; MessageCheckdataGridView.Columns.Add(TextBoxColumnX); buttonColumn = new DataGridViewButtonColumn(); buttonColumn.HeaderText = "操作"; // buttonColumn.Text = "审核"; //this.dataGridViewX1.Columns[5].DefaultCellStyle.NullValue = "删除"; buttonColumn.Width = 100; MessageCheckdataGridView.Columns.Add(buttonColumn); #endregion this.MessageCheckdataGridView.Columns[5].DefaultCellStyle.NullValue = "审核"; 然后去查数据库,将数据库中的信息记录到DataTable中,这个你可以以xml形式来进行保存。然后让DataTable再度xml。 dataTable.ReadXml(stringReader); bindingSource.ResetBindings(false);
kissapple500 2014-10-14
  • 打赏
  • 举报
回复
用dataset吧,然后直接绑定到你的gridview上就行了。
gxingmin 2014-10-14
  • 打赏
  • 举报
回复
可以绑定List,前提是DataClass类的属性名要跟你datagridview1的列名一致
卡卡TOM 2014-10-14
  • 打赏
  • 举报
回复
引用 3 楼 WeaveFate 的回复:
DataClass 我没用过 一般用的DataSet ds=new DataSet(); 将数据添加到ds里去 dataGridView1.DataSource=ds.Tables[0];
同意,平时都是用Dataset的
l2999019 2014-10-14
  • 打赏
  • 举报
回复
引用 5 楼 luanjun123456 的回复:
DataGridView每列都有一个DataPropertyName属性,你看看这个属性你绑定了吗,不绑定一般是不会显示数据的,这个属性需要你绑定Model中的属性或数据库中的列
+1
埋头苦练 2014-10-14
  • 打赏
  • 举报
回复
引用 3 楼 WeaveFate 的回复:
DataClass 我没用过 一般用的DataSet ds=new DataSet(); 将数据添加到ds里去 dataGridView1.DataSource=ds.Tables[0];
+1
完美的神速 2014-10-14
  • 打赏
  • 举报
回复
DataGridView每列都有一个DataPropertyName属性,你看看这个属性你绑定了吗,不绑定一般是不会显示数据的,这个属性需要你绑定Model中的属性或数据库中的列
於黾 2014-10-14
  • 打赏
  • 举报
回复
绑定的数据源应该是datatable,而不是List
WeaveFate 2014-10-13
  • 打赏
  • 举报
回复
DataClass 我没用过 一般用的DataSet ds=new DataSet(); 将数据添加到ds里去 dataGridView1.DataSource=ds.Tables[0];
xiaojinmao 2014-10-13
  • 打赏
  • 举报
回复
引用 1 楼 gxingmin 的回复:
最后还需要加上下面这句 this.dataGridView1.DataBind();
没有 DataBind这个方法呢 我是的winform 不是web的 谢谢!
gxingmin 2014-10-13
  • 打赏
  • 举报
回复
最后还需要加上下面这句 this.dataGridView1.DataBind();

111,080

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧