ASP.NET數(shù)據(jù)綁定控件比較淺析
ASP.NET數(shù)據(jù)控件之?dāng)?shù)據(jù)綁定控件比較(Reapter\DataList\GridView\DatailsView\FormView)都有哪些方面呢?讓我們開始講解:
ASP.NET數(shù)據(jù)控件之?dāng)?shù)據(jù)綁定控件比較1.插入功能方面:
DetailsView和FormView具有插入功能,其它控件沒有
ASP.NET數(shù)據(jù)控件之?dāng)?shù)據(jù)綁定控件比較2.模板
DataList\FormView\Repeater三種必須編輯模板,而
GridView和DetailsView只有在將列轉(zhuǎn)換成模板列以后才會出現(xiàn)各種模板.
ASP.NET數(shù)據(jù)控件之?dāng)?shù)據(jù)綁定控件比較3.自動分頁功能
GridView ,DetailsView和FormView都是2.0版本新增控件,內(nèi)置了分頁,排序等等功能,
其他需要手工定義
ASP.NET數(shù)據(jù)控件之?dāng)?shù)據(jù)綁定控件比較4.數(shù)據(jù)呈現(xiàn)方式:
GridView,DataList,Repeator用于呈現(xiàn)多列數(shù)據(jù),
DetailsView,FormView用于呈現(xiàn)單列數(shù)據(jù),即常用的數(shù)據(jù)明細(xì).
DataList和Reapter都需要編輯模板列,而在模板列當(dāng)中可以添加TextBox,同時可以指定TextBox的ID從而實現(xiàn)提取用戶輸入的值,但是DataGrid和GridView兩個件是不需要編輯模板的,它的編輯功能是自動生成的我們無法知道那些文本框的ID,也就無法通過ID來獲取用戶的輸入,那么可以通過對單元格的引用來實現(xiàn):
- private void DataGrid1_UpdateCommand(object source,xx)
- {
- string bkid=DataGrid1.DataKeys[e.Item.ItemIndex].toString();//提取主鍵
- string bktitle=((TextBox)e.Item.Cells[1].Controls[0]).Text;//提取用戶的輸入
- }
ASP.NET數(shù)據(jù)綁定控件實際區(qū)別一.進(jìn)入編輯狀態(tài):
- DataList1.EditItemIndex = e.Item.ItemIndex;
- DataGrid1.EditItemIndex = e.Item.ItemIndex;
- GridView1.EditIndex = e.NewEditIndex;
- DetailsView1.ChangeMode(DetailsViewMode.Edit);//進(jìn)入編輯狀態(tài)
- DetailsView1.ChangeMode(DetailsViewMode.ReadOnly);//退出編輯狀態(tài)
ASP.NET數(shù)據(jù)綁定控件實際區(qū)別二.設(shè)置主鍵:
- DataList1.DataKeyField = "bkid";
- DataGrid1.DataKeyField = "bkid";
- string[] str={"bkid"};
- GridView1.DataKeyNames = str;
ASP.NET數(shù)據(jù)綁定控件實際區(qū)別三.提取主鍵:
- string bkid = DataList1.DataKeys[e.Item.ItemIndex].ToString();//DataList
- string bkid = DataGrid1.DataKeys[e.Item.ItemIndex].ToString();//DataGrid
- string bkid = GridView1.DataKeys[e.RowIndex].Value.ToString();//GridView
- string bkid = DetailsView1.DataKey[0].ToString();
ASP.NET數(shù)據(jù)綁定控件實際區(qū)別四.查找控件:
- string bktitle = ((TextBox)e.Item.FindControl("txtTile")).Text;//DataList
- string bktitle = ((TextBox)e.Item.Cells[1].Controls[0]).Text;//DataGrid
- string bktitle = ((TextBox)GridView1.Rows[e.RowIndex].Cells[1].Controls[0]).Text;
- string bktitle = ((TextBox)DetailsView1.Rows[1].Cells[1].Controls[0]).Text;
注意查找控件有兩種方法:(各數(shù)據(jù)綁定控件的都可以用下面兩種方法進(jìn)行查找)
1.如果知道控件的ID可以用這種方法
((TextBox)e.Item.FindControl("txtTile")).Text;//這是查找
2.如果不知道控件的ID可用這種方法
((TextBox)e.Item.Cells[1].Controls[0]).Text;//這是索引
ASP.NET數(shù)據(jù)綁定控件實際區(qū)別五.給刪除按鈕添加確認(rèn):
- protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
- {
- if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
- {
- LinkButton lbtn =(LinkButton) e.Item.FindControl("lbtndelete");
- lbtn.Attributes.Add("OnClick","return confirm(‘確定要刪除嗎?‘)");
- }
- }
- protected void DataGrid1_ItemDataBound(object sender, DataGridItemEventArgs e)
- {
- if(e.Item.ItemType==ListItemType.Item || e.Item.ItemType==ListItemType.AlternatingItem)
- {
- LinkButton lbtn = (LinkButton)e.Item.Cells[3].Controls[0];
- lbtn.Attributes.Add("OnClick","return confirm(‘確認(rèn)刪除?‘)");
- }
- }
- protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
- {
- if(e.Row.RowType== DataControlRowType.DataRow)
- {
- string strid = e.Row.Cells[0].Text;//獲取***行的字段值;
- e.Row.Cells[3].Attributes.Add("OnClick", "return confirm(‘確認(rèn)刪除\""+strid+"\"?‘)");
- //用了兩個轉(zhuǎn)義符將***列的值用引號括起來,注意轉(zhuǎn)義符后面一個將不被解釋,是直接放上去;
- }
- }
ASP.NET數(shù)據(jù)綁定控件比較的基本情況就向你介紹到這里,希望對你理解ASP.NET數(shù)據(jù)綁定控件比較有所幫助。
【編輯推薦】