1:Repeater,DataList,DataGrid,GridView都是用來顯示資料的WebControl,它們支援Event Bubble【事件冒泡】,它們中的子控制項的事件可以上升到本身的事件,通過一個子常式和事件關聯。採用的方法是OnItemCommand.
2:DataList,DataGrid對於子常式更具體,有ItemCommand,UpdateCommand,EditCommand,DeleteCommand,CancelCommand他們通過CommandName來執行觸發哪個子常式
比如:DataList
CancelCommand:由子控制項CommandName="cancel"觸發.
DeleteCommand:CommandName="delete"
UpdateCommand:CommandName="update"
EditCommand:CommandName="edit"
ItemCommand:其他CommandName
注意:
包含在DataList中的Button,HpyperLinkButton,ImageButton可以觸發以上事件。
DataList中包含的子常式必須有[u]DataListCommandEventArgs[/u]參數,這個參數表示DataList傳遞給子曆程的資訊
DataListCommandEventArgs
|-----CommandName:引發事件控制項的CommandName
|-----CommandArgument:引發事件控制項的CommandArgument
|-----CommandSource:引發事件的控制項對象
|-----Item:DataList的一個條目
3:GridView主要是RowCommand,RowEditing,RowUpdating
4:他們都用模板機制。
共有的模板:ItemTemplate,AlternatingTemplate,SeparatorTemplate,HeaderTemplate,FooterTemplate
5:DataList有Repeater的所有模板,又加了2個模板SelectedItemTemplate,EditItemTemplate
6:它們可以通過FindControl尋找自己的子控制項
FindControl方法用來搜搜一個容器,尋找制定的ID的控制項,如果找不到,它返回0
7:DataList,DataGrid,GridView都有DataKeys集合。通過DataKeyField設定。而Repeater沒有。
8:對於資料繫結,
>Repeater,DataList通過DataBinder.Eval來實現資料庫的資料繫結。
>DataGrid,GridView利用<Columns></Columns>裡的繫結資料行[BoundColumn],超級連結列[HyperLinkColumn],按鈕列[ButtonColumn],模板列 [TemplateColumn]實現資料繫結.
>DataGrid不用任何模板就可以顯示資料。當然這隻能AutoGenerateColumns="true"
9:DataList中用RepeateLayout屬性可以用來設定每行顯示的格式.它有2個屬性值:html+flow.預設為html。每行資料顯示在table的儲存格裡。如果改成flow,每行資料就會顯示在<span></span>標籤裡。
10:繫結控制項的常見屬性
<1>BackColor 背景色
<2>BorderColor:邊框的顏色
<3>BorderStyle:solid,dased,dotted,groove,inset,outset等
<4>BorderWidth
<5>CssClass:與條目相關聯的級聯樣式單類
<6>Font系列:Font-Bold,Font-Names,Font-size,Font-Names,Font-UnderLine
<7>ForeColor
<8>Height
<9>HorizontalAlign
<10>VerrticalAlign
<11>Width
<12>Wrap:是否單行迴繞
<13> CellSpacing,CellPadding
DataList,DataGrid還可以通過ItemStyle-的首碼設定ItemTemplate的屬性
注意:模板和樣式是獨立的。沒有依賴關係。
10:DataList除了有ReatLayout獨特的屬性外,還有RepeatColumns,RepeatDirection2個屬性來建立多列。
DataGrid卻有BackImageURL設定DataGrid的背景映像
11:關於分頁
>Repeater控制項是最忠實於模版原樣,它可以利用System.Web.UI.WebControls.PagedDataSource實現分頁
>DataList是DataGrid,Repeater的融合品,它的功能也特彆強大,但可惜沒有內建的分頁功能。可以利用DataSet,SqlDataAdapter組合就可以實現分頁。
sdr.Fill(dataset,StartIndex,PageSize,"score")
>DataGrid功能比Repeater,DataList都強大。它有內建的分頁和排序.只要設定DataGrid的相關屬性就可以實現分頁。比如:AllowPaging=true PageSize=10 PageIndexChanged
protected void dgURL_PageIndexChanged(object source, DataGridPageChangedEventArgs e)
{
this.dgURL.CurrentPageIndex = e.NewPageIndex;
MmyeeAd.BLL.ADManage.WebSite bll = new MmyeeAd.BLL.ADManage.WebSite();
DataSet ds = bll.GetList(" 1=1 ");
this.dgURL.DataSource = ds.Tables[0].DefaultView;
this.dgURL.DataBind();
}
GridView事件詳解