2014-01-24 31 views
1

我在每一行上都有一个GridViewImageButton。我想通过单击按钮从模板字段获取值。我在button_click中使用了SelectedIndexGridView的选定索引在按钮单击上的值为-1

SelectedIndex总是-1。

我试过的代码如下。

protected void ImageButton1_Click(object sender, ImageClickEventArgs e) 
    { 
     int i = GridView1.SelectedIndex; 
     Label t = (Label)GridView1.Rows[i].Cells[0].FindControl("Label1"); 
     Session["course"] = t.Text; 
     Response.Redirect("registration.aspx"); 
    } 
+0

单击该按钮不一定选择该行。看看如何添加图像,以及如何在点击图像按钮时强制选择该行。 – Kangkan

+0

我已经使用图像按钮作为gridview中的模板字段。 – user3065219

回答

0

你不会在ButtonClick事件得到的SelectedIndex

所以尝试这样

protected void imgbtn_Click(object sender, EventArgs e) 
{ 
    try { 
     // Get the button that raised the event 
     LinkButton lnkbtn = (LinkButton)sender; 
     // Get the row that contains this button 
     GridViewRow gvRow = (GridViewRow)lnkbtn.NamingContainer; 
     // Get rowindex 
     int i = gvRow.RowIndex; 
     Label t = (Label)GridView1.Rows[i].Cells[0].FindControl("Label1"); 
     Session["course"] = t.Text; 
     Response.Redirect("registration.aspx"); 
     } 
    } catch (Exception ex) { 

    } 
} 

protected void grdview1_RowCommand(object sender, GridViewCommandEventArgs e) 
{ 
    try { 
     if ((e.CommandName == "ImageButton")) { 
      // Get RowIndex 
      int RowIndex = Convert.ToInt32(e.CommandArgument); 
      // Get Row 
      GridViewRow gvr = grdPhone.Rows(RowIndex); 
     } 
    } catch (Exception ex) 
     { 

    } 
} 

ASPX:

在GridView的

你需要设置的CommandName和论证像此

<asp:TemplateField ShowHeader="false"> 
<ItemTemplate> 
    <asp:ImageButton ID="imgbtn" runat="server" OnClick="imgbtn_Click" CausesValidation="false" CommandName="ImageButton" CommandArgument='<%# Container.DataItemIndex %>'>Edit</asp:ImageButton > 
    </ItemTemplate> 
    </asp:TemplateField> 
+0

我不认为点击将在网格视图中工作,以及为什么当您可以在onRowcommand中编写所有逻辑时需要点击。 – Raghurocks

+0

CLick将在网格视图中工作 –

相关问题