3

我的 Button1 在面板内,我想访问 rowindex 以便隐藏该 Imagebutton。但是当我进入调试模式时, GridView1.SelectedIndex 有一个空值。请帮忙!

  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();
    }
4

2 回答 2

2

您说 Button 在面板内。为了能够有效地处理 GridView 事件,请使用 Gridview 本身内部的按钮。

或者,如果您仍想在面板中使用按钮,那么,

1.) 首先在 Gridview 中添加一个选择按钮。使用选择按钮选择一行,然后

2.) 单击面板中的按钮。

GridView.SelectedIndex 仅在您选择了一行 Grid 视图时设置。有两种可能的方式:

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 的两个事件:selectedindexchange 和 selectedindexchanged。

仅在需要时,执行以下此步骤以在 SelectedIndexChangedEvent 中获取 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;
}
于 2013-07-22T05:03:02.410 回答
0

foreach循环代码:

ImageButton StopButton = (ImageButton)row.FindControl("stopImageButton");
ImageButton StartButton = (ImageButton)row.FindControl("startImageButton");
StopButton.Visible = true;
StartButton.Visible = false;
于 2013-07-22T03:05:22.240 回答