在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 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();
}