1) GridView nastavte vlastnost DataKeyNames="ID". Do vlastnosti zadejte jméno sloupce, který obsahuje ID řádku. 2) Místo tlačítko Button použijte ButtonField a nastavte mu vlastnost CommandName. Dejte tam nějaký název tohoto tlačítka, abyste poznal, které tlačítko bylo stisknuto. 3) Stisknutí tlačítka nazachytávejte v button_click, ale v události GridView_RowCommand, která jako parametr dostává pořadí řádku, ve kterém bylo tlačítko stisknuté. Příklad: ASPX:
<asp:GridView ID="GridView" runat="server" AutoGenerateColumns="False" DataKeyNames="ID" DataSourceID="SqlDataSource" onrowcommand="GridView_RowCommand">
<Columns>
<asp:ButtonField Text="Popisek" CommandName="NejakaAkce" />
</Columns>
</asp:GridView>
C#:
protected void GridView_RowCommand(object sender, GridViewCommandEventArgs e)
{
switch (e.CommandName)
{
case "NejakaAkce":
// načtu ID řádky
int id = (int)GridView.DataKeys[int.Parse((string)e.CommandArgument)].Value;
break;
}
}
|