如何根据asp.net GridView中单击的按钮获取行索引?
我有一些记录(1条记录=1行)的Gridview 在每一行我都添加了一个按钮来从mysql数据库中删除这个记录 每行都有相同的按钮 问题是我需要知道按钮是在哪一行单击的?我需要它来获取一个行索引,以获取该行中记录的id 我怎样才能以最简单的方式做到这一点 Gridview:如何根据asp.net GridView中单击的按钮获取行索引?,asp.net,gridview,Asp.net,Gridview,我有一些记录(1条记录=1行)的Gridview 在每一行我都添加了一个按钮来从mysql数据库中删除这个记录 每行都有相同的按钮 问题是我需要知道按钮是在哪一行单击的?我需要它来获取一个行索引,以获取该行中记录的id 我怎样才能以最简单的方式做到这一点 Gridview: <asp:GridView ID="GridView1" runat="server" CellPadding="6" EnableModelValidation="True" For
<asp:GridView ID="GridView1" runat="server"
CellPadding="6" EnableModelValidation="True" ForeColor="#333333"
GridLines="None" Caption="TWOJE WIZYTY" Font-Bold="True"
onrowcreated="GridView1_RowCreated" style="text-align: left">
<AlternatingRowStyle BackColor="#AEAEAE" />
<EditRowStyle BackColor="Blue" />
<FooterStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="#868686" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="Blue" ForeColor="#333333" HorizontalAlign="Center" />
<RowStyle BackColor="#C7C7C7" ForeColor="#333333" />
<SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="Navy" />
</asp:GridView>
您可以使用按钮的
NamingContainer
属性来获取GridViewRow
。然后,您就有了查找其他控件所需的所有信息(例如,如果使用模板字段,则为ID为的控件)
您还可以通过row.RowIndex
获取行索引
,您是否可以使用用于GridView的标记更新问题?根据您声明按钮的方式,解决方案可能会有所不同。记录的id在哪里?您使用的是C#还是VB.NET?请看一下的第一个答案,以获得一个想法-希望这会有所帮助。@PawełAdamczyk:由于您现在编辑了您的问题,并表明您不使用模板字段,因此无法使用FindControl
。但是如果有帮助的话,您可以使用row.RowIndex
来获取索引
protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
{
Button b1 = new Button();
b1.Text = "usuń";
b1.OnClientClick = "return potwierdzenie()";
b1.Click+=new EventHandler(b1_Click);
TableCell cel = new TableCell();
cel.Width = Unit.Pixel(180);
if (e.Row.RowType == DataControlRowType.Header)
{
e.Row.Cells[0].Visible = false;
e.Row.Cells[1].HorizontalAlign = HorizontalAlign.Right;
e.Row.Cells[2].Text = "";
e.Row.Cells.Add(cel);
}
else
{
//HERE IS MY BUTTON ADDED! *********************
cel.Controls.Add(b1);
cel.HorizontalAlign = HorizontalAlign.Right;
e.Row.Cells[0].Visible = false;
e.Row.Cells[1].HorizontalAlign = HorizontalAlign.Right;
e.Row.Cells[2].HorizontalAlign = HorizontalAlign.Left;
e.Row.Cells.Add(cel);
}
}
protected void button_Delete_click(Object sender, EventArgs e)
{
Button btn = (Button) sender;
GridViewRow row = (GridViewRow) btn.NamingContainer;
// assuming you store the ID in a Hiddenield:
Hiddenield hiddenID = (HiddenField) row.FindControl("HiddenID");
int ID = int.Parse(hiddenID.Value);
// delete the record
}