DataGrid入门经典(C#)
這篇文章主要介紹如何在DataGrid控件中實現(xiàn)編輯、刪除、分類以及分頁操作。為了實現(xiàn)我們的意圖,我們使用SqlServer2000自帶的NorthWind數(shù)據(jù)庫。程序分為兩部分:
1.包含HTML代碼的.ASPX文件
2.包含所有邏輯及方法的后臺C#類文件
代碼:
ASPX文件:
在這里我們設(shè)計了一個DataGrid對象,我為一些屬性和方法作了注解。它就變得如此的簡單:?
代碼拷貝框
[Ctrl+A 全部選擇 然后拷貝]?
你看,是不是不難?關(guān)鍵在于我們常動手動腦。多看資料也很關(guān)鍵哦!
C#后臺程序:
讓我們先看一段程序:
???private void Page_Load(object sender, System.EventArgs e)??
???{??
???????if(!IsPostBack)??
???????{??
????????????BindGrid();??
???????}??
???}??
上面展現(xiàn)的是一種非常好的技術(shù),當(dāng)頁面不是PostBack狀態(tài)時,就綁定數(shù)據(jù)。這意味著,一旦頁面被請求數(shù)據(jù)將被綁定。
繼續(xù)看程序:
代碼拷貝框
[Ctrl+A 全部選擇 然后拷貝]
這段代碼執(zhí)行給定的SQL語句訪問數(shù)據(jù)庫,私有函數(shù)GetProductData返回一個包含數(shù)據(jù)記錄的DataSet。下一步,讓我們看如何編輯記錄:
代碼拷貝框
[Ctrl+A 全部選擇 然后拷貝]通過上面代碼所附帶的注解大家也能明白MyDataGrid_Edit函數(shù)的功能:當(dāng)用戶點擊Edit按鈕時激活MyDataGrid_Edit函數(shù),并且程序找到所要編輯的記錄的索引,把該索引號分配給DataGrid的EditItemIndex屬性。
如果用戶點擊Cancel按鈕,將調(diào)用我們在上面的.aspx文件中提到的MyDataGrid_Cancel函數(shù),程序如果分配給DataGrid屬性 EditItemIndex的值為-1,就意味著用戶沒有選擇Edit,程序如下:
代碼拷貝框
[Ctrl+A 全部選擇 然后拷貝]
下面的代碼像我們展現(xiàn)了如何從DataGrid中刪除一條選中的記錄。我們知道Web控件DataGrid有一DataKeyField屬性,事實上它就包含了每條記錄的ProductID字段值。您一定會問如何通過DataKeyField屬性得到DataGrid中選中記錄的ProductID值呢?下面這段代碼會讓您釋然的:
代碼拷貝框
[Ctrl+A 全部選擇 然后拷貝]
下面的代碼用來更新NorthWind數(shù)據(jù)庫的產(chǎn)品信息,
我們可以使用下面這項技術(shù)檢索值:
-------------------
bool Discon=((CheckBox)E.Item.FindControl("Discontinued")).Checked;??
-------------------
這時我們使用FinControl()方法就能得到Discontinued CheckBox的值.??
?代碼拷貝框
[Ctrl+A 全部選擇 然后拷貝]
接下來的BindGrid()調(diào)用私有函數(shù)GetProductData取得DataSet對象并綁定到DataGrid控件。
/// <summary>??
/// 接受數(shù)據(jù)庫數(shù)據(jù)并再次綁定
/// </summary>??
??protected void BindGrid()??
??{??
???MyDataGrid.DataSource=GetProductData().Tables["Products"].DefaultView;??
???MyDataGrid.DataBind();??
??}
用戶在DataGrid中向前或向后移動時激活MyDataGrid_PageIndexChanged事件,因為DataGrid 不能自動的獲取新頁的索引號,所以我們只能手動取得索引號。??
????????/// <summary>
????????/// 分頁操作
????????/// </summary>
????????/// <param name="sender"></param>
????????/// <param name="e"></param>
????????protected void MyDataGrid_PageIndexChanged(object source, DataGridPageChangedEventArgs e)
????????{
????????????MyDataGrid.CurrentPageIndex=e.NewPageIndex;
????????????BindGrid();
????????}
?????用戶在任何時候想對數(shù)據(jù)分類時,就激活下面的Sort_Grid事件。例如,如果用戶點擊field headers,事件就將被激活,并且把數(shù)據(jù)分成我們想要的分類。 我們需要DataView對象去為e.SortExpression.ToString()方法分類,返回的是被點擊域標(biāo)題的分類。??
/// <summary>
/// 分類
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Sort_Grid(Object sender, DataGridSortCommandEventArgs e)??
{
?????
????DataView dv= new DataView(GetProductData().Tables["Products"]);
????dv.Sort= e.SortExpression.ToString();
????MyDataGrid.DataSource=dv;
????MyDataGrid.DataBind();?????????????
}
總結(jié)
以上是生活随笔為你收集整理的DataGrid入门经典(C#)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 对比.Net PetShop和Duwam
- 下一篇: 使用VS.NET2003编写存储过程