DataGird轉(zhuǎn)GridView調(diào)查:
1、前臺文件變化:
***.aspx.designer.cs
.DataGrid .GridView
DataGrid GridView
***.aspx
ASP:DATAGRID asp:GridView
ITEMSTYLE RowStyle DATAGRID之后<COLUMNS>之前
ASP:BOUNDCOLUMN asp:BoundField
ASP:TEMPLATECOLUMN asp:TemplateField
<PAGERSTYLE POSITION="TopAndBottom" MODE="NumericPages"> <PagerSettings Position="TopAndBottom" />
MODE="NumericPages" Mode="Numeric"
SortExpression=‘<%#getSortExp("オーダ番號")%>‘
2、后臺文件變化:
***.cs
ItemCommand RowCommand
DataGridCommandEventHandler GridViewCommandEventHandler
DataGridCommandEventArgs GridViewCommandEventArgs
PageIndexChanged PageIndexChanging 不通用
DataGridPageChangedEventHandler GridViewPageEventHandler
DataGridPageChangedEventArgs GridViewPageEventArgs
SortCommand Sorting
DataGridSortingEventHandler GridViewSortEventHandler
DataGridSortingEventArgs GridViewSortEventArgs
ItemDataBound RowDataBound
DataGridItemEventHandler GridViewRowEventHandler
DataGridItemEventArgs GridViewRowEventArgs e.row
CurrentPageIndex PageIndex 不通用
3、對于包含e.item的值的修改:
前臺:
(1) 控件中添加屬性:CommandArgument="<%# Bind(‘DataField‘) %>" (綁定字段) GridViewCommandEventHandler
(2) CommandArgument=‘<%# Container.DataItemIndex%>‘ (綁定行號)
后臺:
(1) e.Item.Cells[0].Text e.CommandArgument.ToString()
(2) e.Item.Cells[0].Text this.dgPJList.Rows[Convert.ToInt32(e.CommandArgument)].Cells[0].Text
修改: e.Item this.dgPJList.Rows[Convert.ToInt32(e.CommandArgument) % dgPJList.PafeSize]
4、追加RowDataBound方法
例: private void dgPJList_RowDataBound(object sender, GridViewRowEventArgs e)
{
if ((e.Row.RowType == DataControlRowType.DataRow) || (e.Row.RowType == DataControlRowType.Header)
|| (e.Row.RowType == DataControlRowType.Footer))
{
e.Row.Cells[0].Visible = false;
}
}
5、枚舉類型 ListItemType 改為 DataControlRowType 和 DataControlRowState
ListItemType 枚舉表示可以包含在列表控件中的不同項,例如 DataGrid、DataList 和 Repeater 控件。典型的列表控件由包含此枚舉所表示的元素的單元格組成。
成員名稱 說明
AlternatingItem 交替(從零開始的偶數(shù)索引)單元格中的項。它是數(shù)據(jù)綁定的。
EditItem 列表控件中當前處于編輯模式的項。它是數(shù)據(jù)綁定的。
Item 列表控件中的項。它是數(shù)據(jù)綁定的。
SelectedItem 列表控件中的選定項。它是數(shù)據(jù)綁定的。
Separator 列表控件中項之間的分隔符。它不是數(shù)據(jù)綁定的。
Footer 列表控件的頁腳。它不是數(shù)據(jù)綁定的。
Header 列表控件的頁眉。它不是數(shù)據(jù)綁定的。
Pager 頁導航,顯示定位到與 DataGrid 控件關(guān)聯(lián)的不同頁的控件。它不是數(shù)據(jù)綁定的。
DataControlRowType 枚舉 指定數(shù)據(jù)控件中行的功能:
成員名稱 說明
DataRow 數(shù)據(jù)控件的數(shù)據(jù)行。只有 DataRow 行能綁定數(shù)據(jù)。
EmptyDataRow 顯示頁按鈕或頁導航控件的行。頁導航行不能綁定數(shù)據(jù)。
Footer 數(shù)據(jù)控件的腳注行。腳注行不能綁定數(shù)據(jù)。
Header 數(shù)據(jù)控件的標題行。標題行不能綁定數(shù)據(jù)。
Pager 顯示頁按鈕或頁導航控件的行。頁導航行不能綁定數(shù)據(jù)。
Separator 行分隔符。行分隔符不能綁定數(shù)據(jù)。
DataControlRowState枚舉 指定數(shù)據(jù)控件中行的狀態(tài):
成員名稱 說明
Alternate 指示該數(shù)據(jù)控件行是交替行。
(Alternate狀態(tài)在任何時候都可以與其他狀態(tài)組合,例如與 Normal、Edit 或 Insert 組合。這些行可能會受到數(shù)據(jù)控件的 AlternateRowStyle 屬性影響(若已設(shè)置)。)
Edit 指示該行處于編輯狀態(tài),這通常是單擊行的“編輯”按鈕的結(jié)果。通常,Edit 和 Insert 狀態(tài)互相排斥。
Insert 指示該行是新行,這通常是單擊“插入”按鈕添加新行的結(jié)果。通常,Insert 和 Edit 狀態(tài)互相排斥。
Normal 指示該數(shù)據(jù)控件行處于正常狀態(tài)。Normal 狀態(tài)與其他所有狀態(tài)互相排斥。
Selected 指示該行已被用戶選定。
此枚舉有一個 FlagsAttribute 屬性,允許其成員值按位組合。在GridView或DetailsView 中,行的狀態(tài)可以是一個 DataControlRowState 值或值的組合,因此使用按位運算來確定該行的狀態(tài)是否包括一個 DataControlRowState 值而非一個等效測試。
GridViewCommandEventArgs 得到一行
<ASP:BUTTON ID="btn更新" CommandArgument="<%# Container.DataItemIndex%>" 頁面
TextBox tb1 = (TextBox)gvr.Cells[1].Controls[0];
tb1.Text 普通字段(文本框)
skillText = (WebManV3.Web.userControls.UcText)row.Cells[2].FindControl("スキルR"); 用戶控件
string tb1 = gvr.Cells[0].Text; 主鍵(readonly)
datagrid 改 gridview
ASP:BOUNDCOLUMN >> ASP:BoundField
ASP:TEMPLATECOLUMN >> ASP:TemplateField
常見錯誤
The base class includes the field ‘dg実務(wù)経験‘, but its type (System.Web.UI.WebControls.DataGrid) is not compatible with the type of control (System.Web.UI.WebControls.GridView).
GridView 使用經(jīng)驗點滴:獲取 TemplateField 中的控件引用 2006-08-17 01:00:42
大 中 小
如果 GridView 中使用了 TemplateField 列,要想在運行時取得該列中某個控件的引用,需要在 GridView 的 RowCreated 事件中進行。
RowCreated 事件的 GridViewRowEventArgs 參數(shù)有一個屬性 Row,這就是當前行的引用,通過 Row 的 FindControl 方法,傳遞你要獲取引用的控件的 ID 就可以返回該控件的引用了。
記得先判斷一下這個 Row 的類型:e.Row.RowType == DataControlRowType.DataRow
另外,點擊 TemplateField 列中的按鈕時,觸發(fā)的是 GridView 的 RowCommand 事件。首先你要設(shè)置按鈕的 CommandName,這樣在 RowCommand 中就能知道點擊的是哪個按鈕;另外你需要知道被點擊的按鈕是那一行的按鈕,就稍微麻煩一點??梢酝ㄟ^按鈕的 CommandArgument 來設(shè)置,但 GridView 不會自動為你設(shè)置,方法就是在 GridView 的 RowCreated 事件中獲取當前行的行號賦值給按鈕的 CommandArgument 屬性即可。