代码改变世界

DataTable与DataGridView绑定

2012-07-18 09:46  左眼微笑右眼泪  阅读(5409)  评论(0编辑  收藏  举报

     在很多C/S程序中,一般都需要把数据以DataGridView显示出来,有时可以直接把得到的实体集合绑定到DataGridView上面,但更多的时候,我们是把DataTable绑定到这个控件上面,在绑定之前,我们需要对DataGrdiView进行初始化。一般可以用如下的代码进行初始化:

DataGridViewImageColumn colImg = new DataGridViewImageColumn();
colImg.Name = "colImg";
colImg.HeaderText = "";
colImg.Image = Properties.Resources.producttype;
colImg.Width = 20;
dgv.Columns.Add(colImg);
 
dgv.Columns.Add("PRODUCTTYPE", "类型");
dgv.Columns["PRODUCTTYPE"].DataPropertyName = "PRODUCTTYPE";
dgv.Columns["PRODUCTTYPE"].Width = 160;
 
dgv.Columns.Add("ALIAS", "别名");
dgv.Columns["ALIAS"].DataPropertyName = "ALIAS";
dgv.Columns["ALIAS"].Width = 200;
 
dgv.Columns.Add("CLASSIFICATION", "类别");
dgv.Columns["CLASSIFICATION"].DataPropertyName = "CLASSIFICATION";
dgv.Columns["CLASSIFICATION"].Width = 200;
dgv.Columns["CLASSIFICATION"].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;

      一般第一列都是显示一个图片,后面的列就要和你的DataTable中的字段对应。需要注意的是,在创建新列的时候,括号里面的英文名称一定是你DataTable中的列名,中文名称是你想在界面上显示的名称。最后有一句话dgv.Columns["CLASSIFICATION"].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;,这个意思是设置最后一列为自动填充模式。因为每一列我们都设置了宽度,当窗体最大化后,所以的列宽加起来没有窗体宽,那么DataGridView后面就会空出一片出来,把最后一列设置成了自动填充模式后,当窗体最大化时,最后一列的宽度会自动增加,填充其他的空白区域。

     另外,还有一种初始化的方法,也可以使用,代码如下:

DataGridViewTextBoxColumn colProductType = new DataGridViewTextBoxColumn();
colProductType.DataPropertyName = strPRODUCTTYPE;
colProductType.Name = strPRODUCTTYPE;
colProductType.HeaderText = "类型";
colProductType.Width = 160;
 
DataGridViewTextBoxColumn colAlias = new DataGridViewTextBoxColumn();
colAlias.DataPropertyName = strALIAS;
colAlias.Name = strALIAS;
colAlias.HeaderText = "别名";
colAlias.Width = 200;
 
DataGridViewTextBoxColumn colClassification = new DataGridViewTextBoxColumn();
colClassification.DataPropertyName = strCLASSIFICATION;
colClassification.Name = strCLASSIFICATION;
colClassification.HeaderText = "类别";
colClassification.Width = 200;
 
dgv.Columns.AddRange(new DataGridViewColumn[] { 
   colImg, 
   colProductType, 
   colAlias
   });

当然在这种方法中,strPRODUCTTYPE,strALIAS,strCLASSIFICATION三个变量分别需要提前定义好,它们的值也就是需要绑定的DataTable的列的值。