Когда я работаю с GridView, я обычно не использую событие OnClick
для кнопок. Вместо этого я использую событие OnRowCommand
в GridView и привязываю данные к свойству CommandArgument
кнопки. Вы можете получить аргумент команды из параметра GridViewCommandEventArgs
обработчика событий.
Вы можете использовать параметр CommandName
, чтобы связать произвольную строку, чтобы различать любые различные виды кнопок, которые у вас есть. Обратите внимание, что некоторые имена команд уже используются для других событий, таких как «Изменить», «Обновить», «Отмена», «Выбрать» и «Удалить».
Обновление:
Вот пример, предполагая, что ключ данных называется «ID»:
<asp:GridView ID="myGridView" runat="server" OnRowCommand="myGridView_RowCommand">
<Columns>
<asp:TemplateField HeaderText="Column 1">
<ItemTemplate>
... bunch of html codes
<asp:Button ID="myButton" runat="server" Text="Click Me" CommandName="ClickMe" CommandArgument='<%# Eval("ID") %>' />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
А в коде позади:
protected void myGridView_RowCommand(object sender, GridViewCommandEventArgs e)
{
var datakey = e.CommandArgument;
// ...
}