动态的管理ASP.NET DataGrid数据列
点击次数:20 次 发布日期:2008-11-26 11:14:13 作者:源代码网
|
源代码网推荐 源代码网推荐 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 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 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(); 源代码网推荐 } 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 OK,所有的工作都结束了,我们看看运行的结果如何。你可以通过下拉列表来选择要隐藏或者显示的列,并且只需单击Show或者Hide按钮即可。 做人要厚道,请注明转自酷网动力(www.ASPCOOL.COM)。 源代码网推荐 源代码网供稿. |
