DataKeyNames屬性 很多時候我們需要在GridView的RowCommand之類的事件中需要獲取當前行的一些關聯(lián)性的數(shù)據值。但這些數(shù)據值又沒有直接體現(xiàn)在GridView的列中。這個時候該怎么辦呢? 有的同學喜歡用隱藏列的方式,把需要使用但不顯示的字段綁定到此列上,同時設置列寬為0或不顯示,使用時可以用常規(guī)的取某行某列的方式來獲取數(shù)據。 但是在Framework 2.0中,我們可以采用DataKeyNames的方式來獲取此類數(shù)據。 Grup 為我們想使用但不需要顯示的列。(如果有多個字段,使用逗號分開) .aspx <asp:GridView ID="GridView1" runat="server" DataKeyNames="Grup" OnRowCommand="GridView1_RowCommand" > .cs protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) { // 獲取當前行索引 int index = Convert.ToInt32(e.CommandArgument); // 取出當前行數(shù)據鍵值對象中的值 string strGrup = ((GridView)sender).DataKeys[index].Values["Grup"].ToString(); } PageIndexChanged 在單擊某一頁導航按鈕時,但在 GridView 控件處理分頁操作之后發(fā)生。此事件通常用于以下情形:在用戶定位到該控件中的另一頁之后,您需要執(zhí)行某項任務。 //翻頁 protected void AspNetPager1_PageChanging(object src, PageChangingEventArgs e) { AspNetPager1.CurrentPageIndex = e.NewPageIndex; string recordNumber = "0"; DataTable dt = GetSearchResult(AspNetPager1.CurrentPageIndex.ToString(), ref recordNumber); if (dt != null && dt.Rows.Count > 0)
{ GridDataBind(dt, recordNumber); } } PageIndexChanging 在單擊某一頁導航按鈕時,但在 GridView 控件處理分頁操作之前發(fā)生。此事件通常用于取消分頁操作。 .aspx <PagerTemplate> 與<columns>同級別 <PagerTemplate> <table width="100%"> <tr> <td style="text-align: right"> 第<asp:Label ID="lblPageIndex" runat="server" Text='<%# ((GridView)Container.Parent.Parent).PageIndex + 1 %>' />頁 共<asp:Label ID="lblPageCount" runat="server" Text='<%# ((GridView)Container.Parent.Parent).PageCount %>' />頁 <asp:LinkButton ID="btnFirst" runat="server" CausesValidation="False" CommandArgument="First" CommandName="Page" Text="首頁" /> <asp:LinkButton ID="btnPrev" runat="server" CausesValidation="False" CommandArgument="Prev" CommandName="Page" Text="上一頁" /> <asp:LinkButton ID="btnNext" runat="server" CausesValidation="False" CommandArgument="Next" CommandName="Page" Text="下一頁" /> <asp:LinkButton ID="btnLast" runat="server" CausesValidation="False" CommandArgument="Last" CommandName="Page" Text="尾頁" /> <asp:TextBox ID="txtNewPageIndex" runat="server" Width="20px" Text='<%# ((GridView)Container.Parent.Parent).PageIndex + 1 %>' /> <asp:LinkButton ID="btnGo" runat="server" CausesValidation="False" CommandArgument="-1" CommandName="Page" Text="GO" /><!-- here set the CommandArgument of the Go Button to '-1' as the flag --> </td> </tr> </table> </PagerTemplate> .cs protected void gvShippingApply_PageIndexChanging(object sender, GridViewPageEventArgs e) { GridView theGrid = sender as GridView; // refer to the GridView int newPageIndex = 0; if (-2 == e.NewPageIndex) { // when click the "GO" Button TextBox txtNewPageIndex = null; //GridViewRow pagerRow = theGrid.Controls[0].Controls[theGrid.Controls[0].Controls.Count - 1] as GridViewRow; // refer to PagerTemplate GridViewRow pagerRow = theGrid.BottomPagerRow; //GridView較DataGrid提供了更多的API,獲取分頁塊可以使用BottomPagerRow 或者TopPagerRow,當然還增加了HeaderRow和FooterRow if (null != pagerRow) { txtNewPageIndex = pagerRow.FindControl("txtNewPageIndex") as TextBox; // refer to the TextBox with the NewPageIndex value } if (null != txtNewPageIndex) { newPageIndex = int.Parse(txtNewPageIndex.Text) - 1; // get the NewPageIndex } } else { // when click the first, last, previous and next Button newPageIndex = e.NewPageIndex; } // check to prevent form the NewPageIndex out of the range newPageIndex = newPageIndex < 0 ? 0 : newPageIndex; newPageIndex = newPageIndex >= theGrid.PageCount ? theGrid.PageCount - 1 : newPageIndex; // specify the NewPageIndex theGrid.PageIndex = newPageIndex; this.BindData();//重新綁定數(shù)據 } RowCancelingEdit
在單擊某一行的“取消”按鈕時,但在 GridView 控件退出編輯模式之前發(fā)生。此事件通常用于停止取消操作。 RowCommand
當單擊 GridView 控件中的按鈕時發(fā)生。此事件通常用于在控件中單擊按鈕時執(zhí)行某項任務。 RowCreated
當在 GridView 控件中創(chuàng)建新行時發(fā)生。此事件通常用于在創(chuàng)建行時修改行的內容。 RowDataBound
在 GridView 控件中將數(shù)據行綁定到數(shù)據時發(fā)生。此事件通常用于在行綁定到數(shù)據時修改行的內容。 RowDeleted
在單擊某一行的“刪除”按鈕時,但在 GridView 控件從數(shù)據源中刪除相應記錄之后發(fā)生。此事件通常用于檢查刪除操作的結果。 RowDeleting
在單擊某一行的“刪除”按鈕時,但在 GridView 控件從數(shù)據源中刪除相應記錄之前發(fā)生。此事件通常用于取消刪除操作。 RowEditing
發(fā)生在單擊某一行的“編輯”按鈕以后,GridView 控件進入編輯模式之前。此事件通常用于取消編輯操作。 RowUpdated
發(fā)生在單擊某一行的“更新”按鈕,并且 GridView 控件對該行進行更新之后。此事件通常用于檢查更新操作的結果。 RowUpdating
發(fā)生在單擊某一行的“更新”按鈕以后,GridView 控件對該行進行更新之前。此事件通常用于取消更新操作。 SelectedIndexChanged
發(fā)生在單擊某一行的“選擇”按鈕,GridView 控件對相應的選擇操作進行處理之后。此事件通常用于在該控件中選定某行之后執(zhí)行某項任務。 SelectedIndexChanging
發(fā)生在單擊某一行的“選擇”按鈕以后,GridView 控件對相應的選擇操作進行處理之前。此事件通常用于取消選擇操作。 Sorted
在單擊用于列排序的超鏈接時,但在 GridView 控件對相應的排序操作進行處理之后發(fā)生。此事件通常用于在用戶單擊用于列排序的超鏈接之后執(zhí)行某個任務。 Sorting
在單擊用于列排序的超鏈接時,但在 GridView 控件對相應的排序操作進行處理之前發(fā)生。此事件通常用于取消排序操作或執(zhí)行自定義的排序例程。 |
|