/ / Gridview ButtonFieldクリックが機能しない-c#、gridview

Gridview ButtonFieldクリックしない - c#、gridview

したがって、SQLから生成されたグリッドビューがありますストアドプロシージャ。すべてが順調に進んでいます。クリックすると、非表示のラベルが表示されるボタンフィールドが追加されました。私はそれが何か他のことをしたいのですが、これはテストなので、正しい行を得ているかどうかを確認できます。

protected void ServiceList_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "ServiceRestart")
{
int index = Convert.ToInt32(e.CommandArgument);
GridViewRow selectedRow = ServiceList.Rows[index];
TableCell serviceName = selectedRow.Cells[1];
string service = serviceName.Text;

Label1.Visible = true;
Label1.Text = service;
}
}

以下がgridviewのコードです

<asp:GridView ID="ServiceList" runat="server" AllowSorting="True" AutoGenerateColumns="False" BorderStyle="Solid" BorderWidth="2px" OnRowCommand="ServiceList_RowCommand">
<Columns>
<asp:BoundField DataField="ServerName" HeaderText="Server Name" />
<asp:BoundField DataField="ServerIP" Visible="False" />
<asp:BoundField DataField="DisplayName" HeaderText="Service Name" />
<asp:BoundField DataField="Status" HeaderText="Status" />
<asp:ButtonField HeaderText="Restart" Text="Restart" ButtonType="Link" CommandName="ServicResStart" />
</Columns>
</asp:GridView>

リンクをクリックしても何も起こりません。

編集:そして、グリッドビューがSQLから読み込まれている場合、クリックイベントはどの行がクリックされているかをどのように知るのでしょうか?

回答:

回答№1は0

だから、誰かが同じ問題に直面している場合、私はこれを機能させました。基本的に、2行を新しいserviceName行に結合しました。

int index = Convert.ToInt32(e.CommandArgument);
GridViewRow selectedRow = ServiceList.Rows[index];
var serviceName = selectedRow.Cells[1].Text;