2013-07-22 83 views
3

我的Button1在Panel中,我想訪問rowindex以便隱藏該Imagebutton。但是當我進入調試模式時,GridView1.SelectedIndex有一個空值。懇求幫助!在GridView外部獲取GridView RowIndex

protected void Button1_Click1(object sender, EventArgs e) 
    { 

     foreach (GridViewRow row in GridView1.Rows) 
     { 
      if (row.RowType == DataControlRowType.DataRow) 
      { 
       if (row.RowIndex == Convert.ToInt32(GridView1.SelectedIndex)) 
       { 
        ImageButton StopButton = (ImageButton)row.FindControl("stopImageButton"); 
        ImageButton StartButton = (ImageButton)row.FindControl("startImageButton"); 
        StopButton.Visible = true; 
        StartButton.Visible = false;   
       } 
      } 
     } 

     this.StopTimeNotesPanel_ModalPopupExtender.Hide(); 
    } 
+0

什麼ü意味着通過「我要隱藏Imagebutton'也是選中的索引,當你在gridview中選擇一行,這就是爲什麼你不能得到的值如果你點擊一個外部按鈕 – meda

+2

這可能是一個愚蠢的問題,但實際上是一個行選擇?單擊該按鈕可能不會選擇該行。 –

+0

我有一個gridview包含每行Imagebutton列。 – user1954418

回答

2

你說的按鈕在面板內部。爲了能夠有效地處理GridView事件,請在Gridview本身內使用一個按鈕。

或者如果你仍然想在面板使用的按鈕,然後,

1)首先內部的GridView添加一個選擇按鈕。 2.使用選擇按鈕選擇一行,然後點擊面板中的按鈕。

GridView.SelectedIndex僅在您選擇了一排網格視圖時設置。有兩種方法可行:

1.)將AutoGenerateSelectButton屬性設置爲true。

<asp:gridview id="CustomersGridView" 
     datasourceid="CustomersSource" 
     autogenerateselectbutton="True" 
     runat="server"> 

2)添加自己內部的GridView的部分作爲ButtonField字段:

<asp:gridview id="CustomersGridView" 
     datasourceid="CustomersSqlDataSource" 
     autogeneratecolumns="false" 
     runat="server"> 
     <columns> 
      <asp:buttonfield buttontype="Button" 
      commandname="Select" 
      headertext="Select Customer" 
      text="Select"/> 
      <asp:boundfield datafield="CompanyName" 
      headertext="Company Name"/> 
     </columns> 
</asp:gridview> 

現在選擇了一行之後,GridView控件的兩個事件將被解僱: selectedindexchanging &的SelectedIndexChanged。

僅在需要時,下面做這一步在SelctedIndexChangedEvent獲得SelectedRow現在

void CustomersGridView_SelectedIndexChanged(Object sender, EventArgs e) 
    { 

    // Get the currently selected row using the SelectedRow property. 
    GridViewRow row = CustomersGridView.SelectedRow; 
    MessageLabel.Text = "You selected " + row.Cells[2].Text; // just for Display 

    } 

,你的按鈕點擊事件中,獲得所選擇的指標:

protected void Button1_Click1(object sender, EventArgs e) 
{ 
    int i = CustomersGridView.SelectedIndex; 
} 
0

代碼爲您foreach循環:

ImageButton StopButton = (ImageButton)row.FindControl("stopImageButton"); 
ImageButton StartButton = (ImageButton)row.FindControl("startImageButton"); 
StopButton.Visible = true; 
StartButton.Visible = false; 
+1

它適用於所有的行。我只希望SELECTED ROW不是全部 – user1954418