2012-11-08 147 views
10

只是想從變量傳遞價值,以反璞歸真變量:行索引rowCommand

protected void gvVariableDetail_RowCommand(object sender, GridViewCommandEventArgs e) 
     { 

      if (e.CommandName == "Edit") 
      { 

       int index = Convert.ToInt32(e.CommandArgument); 
       GridViewRow gvRow = gvVariableConfig.Rows[index]; 
       int rowIndex = index; 

      } 

     } 

但rowIndex位置仍具有零值,指數得到了行值(在這些情況下,我嘗試編輯第2行等指標值是1(由0開始))。所以希望有人知道如何將索引值傳遞給rowIndex。

+0

這很酷你想這樣做,但你的問題是什麼? –

+0

需要獲取用於javascript的行索引,但我想通過按鈕觸發這些腳本,而不是通過網格中的命令之一。所以我想將索引值轉移到全局變量,以便使用另一個按鈕 –

+0

一個完美的答案,仍然不包含任何問題。 –

回答

16

您可以使用CommandSource屬性,並將其轉換爲NamingContainerGridViewRow。然後你可以使用它的RowIndex屬性:

GridViewRow gvr = (GridViewRow)((Control)e.CommandSource).NamingContainer; 
int rowIndex = gvr.RowIndex; 

如果你想使用CommandArgument你必須從ASPX設置:

CommandArgument='<%# ((GridViewRow) Container).RowIndex %>' 

那麼這也可以工作:

int RowIndex = int.Parse(e.CommandArgument.ToString()); 
+2

得到消息無法投射'System.Web.UI.WebControls.ContentPlaceHolder'類型的對象來鍵入'System.Web.UI.WebControls.GridViewRow'。 –

+0

使用方法1先生。我使用的控制擴展網格視圖觸發RowCommand –

+0

我是新手到ASP,所以我將只張貼代碼... 保護無效gvVariableDetail_RowCommand(對象發件人,GridViewCommandEventArgs E) { 如果(e.CommandName ==「使用最後一種解決方案編輯「) { ........... } } 不能這樣做,因爲將字符串轉換成int –