管理 ASP.NET DataGrid 数据列

asp.net|datagrid|数据

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

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

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

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

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

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

代码拷贝框
private void CreateDataGrid(){// Set DataGrid propertiesDataGrid1.AutoGenerateColumns = false;// Get a DataSet object filled with dataDataSet ds = DB.GetDataSet();// Create ID column & add to DataGridBoundColumn col = new BoundColumn();col.HeaderText="User ID"; col.DataField="ID";DataGrid1.Columns.Add(col); // Create Name column & add to DataGridcol = new BoundColumn();col.HeaderText="User Name"; col.DataField="Name";DataGrid1.Columns.Add(col); // Create Address column & add to DataGridcol = new BoundColumn();col.HeaderText="User Address"; col.DataField="Address";DataGrid1.Columns.Add(col); // DataGrid data bindingDataGrid1.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 Column和Hide 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(); }   
[Ctrl+A 全部选择 然后拷贝]

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

时间: 2024-10-25 00:19:24

管理 ASP.NET DataGrid 数据列的相关文章

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

asp.net|datagrid|动态|数据 在ASP.NET的DataGrid数据显示控件编程中,我们有几种方式可以增加DataGrid columns.其中最常见的方法是在web forms设计器中增加,通过在控件工具箱中拖访DataGrid控件到web设计页面,然后在属性生成器中增加Columns列;还有一种方式就是在HTML视图模式下更改HTML代码的方式增加Columns列.但是这两种方式都是在设计时进行的,一旦设计完成就无法更改.其实我们也可以在程序运行时动态的增加或者删除Colum

手工创建datagrid数据列/模板列/按钮事件+简单的数据操作类(asp.net)

  1)创建datagrid数据列/模板列/按钮的操作类:using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Data.SqlClient; using System.Drawing; using System.Web; using System.Web.SessionState; using System.Web.UI; using System

1)创建datagrid数据列/模板列/按钮的操作类:

datagrid|按钮|创建|模板|数据   //写这个程序,为了是显示局域网内的主机,然后通过用户点击选中的机器,检查是否该主机上安装有SQLSERVER,是为一个配置程序所写的//这里提供CODE,给有需要的朋友 //设置DLL必须使用该命名空间using System.Runtime.InteropServices;   #region 动态链接库定义  [DllImport("mpr.dll",CharSet=CharSet.Auto)] private static exte

利用ASP.NET DataGrid显示主次关系的数据

asp.net|datagrid|数据|显示 大家在实际工作中有没有遇到要在DataGrid中显示带有主次结构的数据呢?如果你对ADO.NET和SQL Server2000熟悉的话,我们下面就举一个利用VS.NET自带的示例数据库Northwind和VB.NET来说明如何实现这一目标.首先,我们先准备要显示的带有主次结构的数据. 下面就是要绑定到HierarchicalDataGrid.aspx的VB.NET代码文件HierarchicalDataGrid.aspx.vb的内容: Imports

ASP.NET Datagrid创建自定义列

asp.net|datagrid|创建 简介 不得不承认,为 Microsoft? ASP.NET 编写 Datagrid 代码包括大量的重复工作.尽管我深受该控件的困扰,但我还是不断寻找简化这类任务的捷径.谁都不愿意做重复的工作,对不对?为了摆脱这种烦人的工作,我们要将多个项目中的重复代码封装到一个可重复使用的程序包中.这才是面向对象的编程工作所要解决的问题,使用 Datagrid 也不例外.对于 Datagrid 控件来说,要实现该目的,需要将常用的代码放到一个内置的列类型中(将在第一个示例

ASP.NET中实现DataGrid数据排序

asp.net|datagrid|排序|数据 Visual Studio .Net为编写WinForm程序(即:在Windows平台下运行的程序)所提供的DataGrid组件比起微软以往的各种开发环境中提供的DataGrid组件都要"高级"许多.其"高级"的地方就在于不需要再进行任何其他设置或编程,DataGrid就能够对其中的数据分别按照升.降序进行排列.这种"高级"功能给我们编程提供了许多方便.图01是在WinForm程序中的DataGrid

ASP.NET页面中冻结DataGrid的列或头部

asp.net|datagrid|页面 ASP.NET页面中,有时候我们需要冻结datagrid中的某一列,比如显示的数据项过多时,我们需要让第一列不动,拖动横向滚动条时其他列隐藏,这时就需要冻结列了:另外,有时候也需要让datagrid的头部不动,拖动纵向滚动条时,下面的数据项可以滚动.在实现的过程中,其实就是用了css样式来控制,一起看一下. 要冻结哪一列,就把fixCol这个CSS加到HeaderStyle-CssClass和ItemStyle-CssClass--> <style ty

手工创建datagrid的数据列(c#window)

datagrid|window|创建|数据   笔者以前很少使用vs.net中的datagrid,原因是觉得不是很好用,昨天突然想起来,用一个简单的类,来实现手工创建数据列,这样可以自定义列名和绑定数据字段,使用起来比较方面的~~ 类:exDataGrid.cs using System;using System.Drawing;using System.Collections;using System.ComponentModel;using System.Windows.Forms; nam

datagrid绑定列下的数据通过绑定Button的提取

datagrid|数据 假设我在datagrid里绑定了3个列0列和1列是相关的数据,2列是绑定的button列我点击某一行对应的button,如何得到该列0列具体文本内容? private void search_DataGrid_SelectedIndexChanged(object sender, System.EventArgs e) { DataGridItem dgi = (DataGridItem)search_DataGrid.SelectedItem; Label1.Text