马上注册,结交更多好友,享用更多功能,让你轻松玩转社区
您需要 登录 才可以下载或查看,没有账号?註冊
x
[Point=95]<SPAN class=bold><SPAN class=smalltxt><b><FONT size=2>動態的管理ASP.NET DataGrid數據列<BR></FONT></b></SPAN></SPAN><BR><BR>在ASP.NET的DataGrid資料顯示控制項編程中,我們有幾種方式可以增加DataGrid columns。其中最常見的方法是在web forms設計器中增加,通過在控制項工具箱中拖訪DataGrid控制項到web設計頁面,然後在屬性生成器中增加Columns列;還有一種方式就是在HTML視圖模式下更改HTML代碼的方式增加Columns列。但是這兩種方式都是在設計時進行的,一旦設計完成就無法更改。其實我們也可以在程式運行時動態的增加或者刪除Columns列。在這篇文章中,我將向大家介紹如何編程實現在運行時動態的增加和刪除Columns列,其實是通過隱藏或者現實Columns列來實現的。<BR><BR> DataGrid 的Columns屬性是訪問datagrid Columns的關鍵所在。訪問這個屬性返回的是DataGridColumnCollection這樣的一個集合物件,它包含了所有的DataGrigColumn物件。DataGridColumnCollection提供了增加一個DataGrigColumn物件和刪除一個已經存在的DataGrigColumn物件的方法。,我們將使用DataGridColumnCollection的Add方法來增加一個DataGrigColumn物件,從而在運行時動態的增加一列到DataGrid中去。一個DataGrigColumn代表DataGrid的一列,DataGrid的Visible屬性用來顯示或者隱藏一個列。<BR><BR> 好了,下面讓大家跟我一起來創建一個DynamicDataGrid的C#的ASP.NET的工程,他有隱藏和顯示DataGrid 的每一列的選項。<BR><BR> 在我用VS.NET創建的web application裏面,我在設計頁面上拖放了一個Panel 控制項。在這個panel控制項上,我放置了一個DataGrid控制項,一個DropDownList控制項,兩個Button控制項用於改變DataGrid控制項的屬性。最後的設計介面看起來是下圖這樣的。<BR><BR><IMG onmouseover="if(this.alt) this.style.cursor='hand';" onclick="window.open('http://www.vbbcn.com/forum/upload/17601_1.jpg');" src="http://www.vbbcn.com/forum/upload/17601_1.jpg" onload="if(this.width>screen.width-333) {this.width=screen.width-333;this.alt='Click Here to Open New Window';}" border=0><BR><BR> 現在我們開始創建兩個方法:FillDataGrid()和FillColumnsList()方法。FillDataGrid()用於增加一個列到DataGrid控制項和用DataSet資料源來填充它。在這裏的我是通過DB.GetDataSet()方法來獲取DataSet的。大家可以參照附加的源代碼檔(DB.CS)獲取更多的細節。<BR><BR> 下面的代碼說明了CreateDataGrid()的實現。從代碼中可以看出,我創建了三個列,用BoundColumn的DataField屬性綁定到Dataset的ID,Name和Address欄位。BoundColumn類繼承自DataGridColumn類。<BR><BR>private void CreateDataGrid()<BR>{<BR>// Set DataGrid properties<BR>DataGrid1.AutoGenerateColumns = false;<BR><BR>// Get a DataSet object filled with data<BR>DataSet ds = DB.GetDataSet();<BR><BR>// Create ID column & add to DataGrid<BR>BoundColumn col = new BoundColumn();<BR>col.HeaderText="User ID"; <BR>col.DataField="ID";<BR>DataGrid1.Columns.Add(col); <BR><BR>// Create Name column & add to DataGrid<BR>col = new BoundColumn();<BR>col.HeaderText="User Name"; <BR>col.DataField="Name";<BR>DataGrid1.Columns.Add(col); <BR><BR>// Create Address column & add to DataGrid<BR>col = new BoundColumn();<BR>col.HeaderText="User Address"; <BR>col.DataField="Address";<BR>DataGrid1.Columns.Add(col); <BR><BR>// DataGrid data binding<BR>DataGrid1.DataSource = ds.Tables[0];<BR>DataGrid1.DataBind();<BR>} <BR><BR> FillColumnsList()方法只是簡單的從DataGrid中讀取列名,並且將這些列(Columns)名填充到DropDownList控制項的下拉清單中去。我們將使用DropDownList控制項來選取隱藏或者顯示的列。<BR><BR>private void FillColumnsList(DataGrid grid)<BR>{<BR>foreach (DataGridColumn col in grid.Columns)<BR>{<BR>ColumnsList.Items.Add(col.HeaderText);<BR>}<BR>}<BR><BR><BR> 接著我們來添加HideDataGridColumn()方法來具體的通過index索引和bool值兩個參數來顯示或者隱藏一個列。在這裏,我僅僅是簡單的設置Columns列的Visible屬性為true或者false.<BR><BR>private void HideDataGridColumn(int index, bool show)<BR>{<BR>DataGrid1.Columns[index].Visible = show; <BR>}<BR><BR><BR> 最後的工作就是增加Show Column和Hide Column的單擊事件處理。正如我們在代碼中看到的一樣,我只是簡單的調用HideDataGridColumn()方法來顯示或者隱藏列,當然要傳入參數了。<BR><BR>private void HideColumnBtn_Click(object sender, System.EventArgs e)<BR>{<BR>HideDataGridColumn(ColumnsList.SelectedIndex, false);<BR>this.DataBind();<BR>}<BR>private void ShowColumnBtn_Click(object sender, System.EventArgs e)<BR>{<BR>HideDataGridColumn(ColumnsList.SelectedIndex, true);<BR>this.DataBind(); <BR>} <BR><BR><BR> OK,所有的工作都結束了,我們看看運行的結果如何。你可以通過下拉清單來選擇要隱藏或者顯示的列,並且只需單擊Show或者Hide按鈕即可。[/Point] |
|