)動態管理ASP.NET DataGrid資料列

來源:互聯網
上載者:User
動態管理ASP.NET DataGrid資料列
作者:younther 出處: 動網先鋒
在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();
}

  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按鈕即可。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.