Вот, пожалуйста ...
public void Gridview1_RowCommand(Object sender, GridViewCommandEventArgs e)
{
lblStatus.Text = e.CommandName;
}
Я вижу, что в этом вопросе есть нечто большее, чем здесь, терпите меня. Один из способов - делегировать событие OnCommand
каждой кнопки назначенному обработчику событий следующим образом:
<div>
<asp:GridView ID="MyGridView" runat="server" EnableModelValidation="true" AutoGenerateColumns="False">
<Columns>
<asp:TemplateField ShowHeader="False">
<ItemTemplate>
<asp:Button ID="MyWinButton" runat="server" OnCommand="MyWinButton_OnCommand" CommandName="Win" Text="Win" />
<asp:Label ID="MyStatusLabel" runat="server" Text='<%# Bind("text") %>'/>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</div>
public void MyWinButton_OnCommand(Object sender, CommandEventArgs e)
{
var label = ((Button)sender).Parent.FindControl("MyStatusLabel") as Label;
label.Text = e.CommandName;
}
Кроме того, как предлагает Элисон, вы не увидите желаемого результата, если не используете !IsPostBack
в Page_Load
. Кроме того, при этом это фактически позволяет вам использовать однострочный командный обработчик события, как первоначально предлагалось, хотя и с небольшим изменением в извлечении метки:
public void MyGridView_OnRowCommand(Object sender, GridViewCommandEventArgs e)
{
var label = ((Button)e.CommandSource).Parent.FindControl("MyStatusLabel") as Label;
label.Text = e.CommandName;
}