2015-10-13 51 views
-1

當在第一頁時,隱藏值可以被獲取。所以,沒有問題,但是在頁面索引改變之後,隱藏的字段值不能被用戶獲得。它顯示錯誤,是關於 「System.ArgumentOutOfRangeException」 試圖讓hiddenvalue如何在gridview中使用分頁獲得隱藏值

(string sValue = ((HiddenField)GridView1.Rows[rowIndex].FindControl("HiddenField1")).Value; 

ASP側時:

 <Columns> 
      <asp:BoundField DataField="sayfa_adeti" HeaderText="SAYFA ADETİ" ItemStyle-HorizontalAlign="Center" ItemStyle-Width="60px"></asp:BoundField> 
       </asp:BoundField> 

    <asp:HiddenField ID="HiddenField1" runat="server"Value='<%#Eval("ID")%>'</asp:HiddenField> 

    protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e) 
{ 
    getOncekiFotokopiTalepler();//fillGrid 
    GridView1.PageIndex = e.NewPageIndex; 
    GridView1.DataBind(); 
} 

C#側

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) 
{ 
    //int rowIndex = Convert.ToInt32(e.CommandArgument); 
    int rowIndex = Convert.ToInt32(e.CommandArgument.ToString().Trim()); 


    if (e.CommandName == "Goruntule") 
    { 
     string sValue = ((HiddenField)GridView1.Rows[rowIndex].FindControl("HiddenField1")).Value; 
     GridViewRow gvRow = GridView1.Rows[rowIndex]; 

     Session["SELECTED_FOTOKOPI_TALEP_ID"] = sValue; 
     Response.Redirect("~/fotokopiTalebimiGor.aspx"); 
    } 

} 
+0

所以,如果你選擇第2頁第3行,什麼是價值的rowIndex?我的猜測是,你正在獲取數據源行索引,並試圖將其應用於只有1頁數據(即10個項目)的gridview行索引,並且您正在索引項目13 - 例如。 –

+0

代碼失敗時,「rowIndex」的值是什麼? 還有一些代碼會很有用,因爲我們看不到如何觸發RowCommand。例如,如果是通過鏈接按鈕,則可以使用LinkBut​​ton的CommandArgument屬性,並將THAT設置爲「ID」而不是使用HiddenField。 – Culme

+0

例如在第3頁中,我的rowIndex值是13,當我點擊鏈接按鈕時,rowcommand函數也可以工作。 –

回答

1

嘗試使用這樣的:

int rowIndex = Convert.ToInt32(e.CommandArgument) % GridView1.PageSize; 
+0

它的工作原理,但有更好的解決方案:)謝謝 –

1

你可以試試與CommandSource。

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) 
{ 
    var control = e.CommandSource as Control; 
    var gridViewRow = control.NamingContainer as GridViewRow; 
    int rowIndex = gridViewRow.RowIndex; 

    .... 
} 
相關問題