动态的管理ASP.NET DataGrid数据列

转载 2004年07月01日 09:50:00
CSDN - 文档中心 - .NET    
标题     动态的管理ASP.NET DataGrid数据列    younther(翻译)
关键字     Datagrid
出处     http://www.c-sharpcorner.com/Code/2003/Feb/DynamicDataGrid.asp%20author:Mahesh%20Chand

动态的管理ASP.NET DataGrid数据列

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

ASP.NETDataGrid数据显示控件编程中,我们有几种方式可以增加DataGrid columns。其中最常见的方法是在web forms设计器中增加,通过在控件工具箱中拖访DataGrid控件到web设计页面,然后在属性生成器中增加Columns;还有一种方式就是在HTML视图模式下更改HTML代码的方式增加Columns列。但是这两种方式都是在设计时进行的,一旦设计完成就无法更改。其实我们也可以在程序运行时动态的增加或者删除Columns列。在这篇文章中,我将向大家介绍如何编程实现在运行时动态的增加和删除Columns列,其实是通过隐藏或者现实Columns列来实现的。

DataGrid Columns属性是访问datagrid Columns的关键所在。访问这个属性返回的是DataGridColumnCollection这样的一个集合对象,它包含了所有的DataGrigColumn对象。DataGridColumnCollection提供了增加一个DataGrigColumn对象和删除一个已经存在的DataGrigColumn对象的方法。,我们将使用DataGridColumnCollectionAdd方法来增加一个DataGrigColumn对象,从而在运行时动态的增加一列到DataGrid中去。一个DataGrigColumn代表DataGrid的一列,DataGridVisible属性用来显示或者隐藏一个列。

好了,下面让大家跟我一起来创建一个DynamicDataGridC#ASP.NET的工程,他有隐藏和显示DataGrid 的每一列的选项。

在我用VS.NET创建的web application里面,我在设计页面上拖放了一个Panel 控件。在这个panel控件上,我放置了一个DataGrid控件,一个DropDownList控件,两个Button控件用于改变DataGrid控件的属性。最后的设计界面看起来是下图这样的。

<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />

 

 

 

 

现在我们开始创建两个方法:FillDataGrid()FillColumnsList()方法。FillDataGrid()用于增加一个列到DataGrid控件和用DataSet数据源来填充它。在这里的我是通过DB.GetDataSet()方法来获取DataSet的。大家可以参照附加的源代码文件(DB.CS)获取更多的细节。

下面的代码说明了CreateDataGrid()的实现。从代码中可以看出,我创建了三个列,用BoundColumnDataField属性绑定到DatasetID,NameAddress字段。BoundColumn类继承自DataGridColumn类。

private void CreateDataGrid()
{
// Set DataGrid properties
DataGrid1.AutoGenerateColumns = false;

// Get a DataSet object filled with data
DataSet ds = DB.GetDataSet();

// Create ID column & add to DataGrid
BoundColumn col = new BoundColumn();
col.HeaderText="User ID"; 
col.DataField="ID";
DataGrid1.Columns.Add(col); 

// Create Name column & add to DataGrid
col = new BoundColumn();
col.HeaderText="User Name"; 
col.DataField="Name";
DataGrid1.Columns.Add(col); 

// Create Address column & add to DataGrid
col = new BoundColumn();
col.HeaderText="User Address"; 
col.DataField="Address";
DataGrid1.Columns.Add(col); 

// DataGrid data binding
DataGrid1.DataSource = ds.Tables[0];
DataGrid1.DataBind();

FillColumnsList()方法只是简单的从DataGrid中读取列名,并且将这些列(Columns)名填充到DropDownList控件的下拉列表中去。我们将使用DropDownList控件来选取隐藏或者显示的列。

private void FillColumnsList(DataGrid grid)
{
foreach (DataGridColumn col in grid.Columns)
{
ColumnsList.Items.Add(col.HeaderText);
}
}

 

接着我们来添加HideDataGridColumn()方法来具体的通过index索引和bool值两个参数来显示或者隐藏一个列。在这里,我仅仅是简单的设置Columns列的Visible属性为true或者false.

private void HideDataGridColumn(int index, bool show)
{
DataGrid1.Columns[index].Visible = show; 
}

 

最后的工作就是增加Show ColumnHide Column的单击事件处理。正如我们在代码中看到的一样,我只是简单的调用HideDataGridColumn()方法来显示或者隐藏列,当然要传入参数了。

private void HideColumnBtn_Click(object sender, System.EventArgs e)
{
HideDataGridColumn(ColumnsList.SelectedIndex, false);
this.DataBind();
}
private void ShowColumnBtn_Click(object sender, System.EventArgs e)
{
HideDataGridColumn(ColumnsList.SelectedIndex, true);
this.DataBind(); 

 

OK,所有的工作都结束了,我们看看运行的结果如何。你可以通过下拉列表来选择要隐藏或者显示的列,并且只需单击Show或者Hide按钮即可。

 

ASP.NET中为DataGrid动态创建模板列

为DataGrid动态创建模板列,首先要实现ITemplate接口:public class MyDataGridTemplate : System.Web.UI.ITemplate...{    L...
  • JOHNCOOLS
  • JOHNCOOLS
  • 2006年12月05日 15:53
  • 765

asp.net and datagrid 动态绑定数据列与存取特定列的值

5.动态绑定数据列     runat="server" PageSize="3" AllowPaging="True" AutoGenerateColumns="False" BorderColor...
  • sichuanpb
  • sichuanpb
  • 2005年07月07日 12:27
  • 1325

asp.net 中使用EasyUI Datagrid 加载动态数据分页查询

asp.net 中使用EasyUI Datagrid 加载动态数据分页查询
  • jxl15680701016
  • jxl15680701016
  • 2016年05月04日 12:42
  • 1401

动态的管理ASP.NET DataGrid数据列

在ASP.NET的DataGrid数据显示控件编程中,我们有几种方式可以增加DataGrid columns。其中最常见的方法是在web forms设计器中增加,通过在控件工具箱中拖访DataGrid...
  • luoboqingcai
  • luoboqingcai
  • 2004年09月25日 20:00
  • 841

ASP.NET中如何动态生成模板列

///  /// 实现ITemplate接口,用来打印 ///  public class ColumnTemplate : ITemplate {      public void Instanti...
  • minghui000
  • minghui000
  • 2005年04月03日 10:53
  • 960

easyui dataGrid 动态添加列

其实很简单. 新手创作,不好勿喷. jsp页面: $(function () { $.getJSON('${pageContext.request.contextPa...
  • jumtre
  • jumtre
  • 2014年11月04日 16:33
  • 23641

ASP.NET,datagrid,textbox datagrid中隐藏列之后无法获得其中textbox值的问题

 protected void DataGrid1_ItemDataBound(object sender, DataGridItemEventArgs e){e.Item.Cells[i].Attr...
  • yahui0313
  • yahui0313
  • 2007年01月08日 10:04
  • 474

datagrid 列顺序调整

$.extend($.fn.datagrid.methods,{       columnMoving: function(jq){           return jq.each(functi...
  • lwqjn
  • lwqjn
  • 2015年04月02日 09:51
  • 537

datagrid动态加载列(续)

之前有一篇博客写到了如何动态加载datagrid的列,上次只是介绍如何动态动态表头,并没有将数据添加到datagrid中,本次主要来说如何将数据库中的数据,动态添加到每一列中。      先说一下为...
  • u013038643
  • u013038643
  • 2016年04月24日 17:25
  • 1436

asp.net datagrid实现多层表头

using System;using System.Collections;using System.ComponentModel;using System.Data;using System.Dra...
  • huhong81312
  • huhong81312
  • 2005年04月06日 23:14
  • 778
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:动态的管理ASP.NET DataGrid数据列
举报原因:
原因补充:

(最多只允许输入30个字)