GridView动态绑定列(据条件显示某些列)

本文介绍如何在ASP.NET中使用GridView控件动态地管理数据和列,包括如何创建DataTable作为数据源,如何添加和配置不同类型的列如CommandField、BoundField及TemplateField等,并提供了一些实用的操作示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有的情况下,GridView数据源的所有数据并不需要全部显示,会根据条件部分的显示,或者是动态的添加删减某些列。

这种情况下,可以先把数据源所有的数据抽取出来,存放在一个DataTable中。

DataTable dt=new DataTable();

GridView1.AutoGenerateColumns=false;//只有添加了这个之后,才不会显示出所有的列

GridView1.DataSource=dt; //这句很重要,需要特别注意。如果没有指定数据源,GridView中无法显示出数据

GridView1.Columns.Clear();//如果没有这个方法,GridVIew1的数据列就会一直增加。所以注意每次增加数据源之后,先把之前的列清除

得到整个数据源后,在按照条件动态绑定所需要的列。可添加的列同GridView一样,有模板列,命令列,按钮列,数据列。。。

CommandField 列:

?
//add an edit column for grdReport1
CommandField cf = new CommandField();
cf.ButtonType = ButtonType.Link;
cf.ShowEditButton = true ;
cf.CausesValidation = false ;
cf.HeaderText = "Edit" ;
cf.ItemStyle.HorizontalAlign = HorizontalAlign.Center; //居中对齐
   grdReport1.Columns.Add(cf); //GridView添加命令列
?
GridView1.DataBind();

BoundField 列:(这是最基本的绑定,可以对新添加的列设置格式,对齐方式,文本颜色等等)

?
//遍历dt中的所有列,或者根据条件选择 
for ( int i = 0; i < dt.Columns.Count; i++)
  {
      BoundField bfCase = new BoundField();
      bfCase.DataField = dt.Columns[i].ToString();
      bfCase.HeaderText = dt.Columns[i].ToString();
      grdReport1.Columns.Add(bfCase);
  }
?
GridView1.DataBind();

Template 列:(待验证……)

?
//添加模板列
     TemplateField tf= new TemplateField ();
  tf.ItemTemplate= new MyTemplate( "" ,DataControlRowType.DataRow);
  bfCase.HeaderText = "" ; //你想在模板列中显示的
     tf.HeaderTemplate= new MyTemplate( "" ,DataControlRowType.Header);
  tf.ItemStyle.HorizontalAlign = HorizontalAlign.Center; //居中对齐
  grdReport1.Columns.Add(tf);            
  GridView1.DataBind();

在这些都完成之后,要记得添加一句:GridView1.DataBind();

 

 

 

常用操作:

//单击一个单元格选中单元格所在行
  this.dataGridView1.Rows[this.dataGridView1.SelectedCells[0].RowIndex].Selected = true;            

//如果选中某行

if (dataGridView1.SelectedRows.Count != 0)


 //单击一个单元格选中单元格所在行,获取其第一列数据
int  id = Int32.Parse(dataGridView1.Rows[dataGridView1.CurrentCell.RowIndex].Cells[0].Value.ToString());


           

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值