私は gridview を持っています。各行の中に、commandName "Activate" のボタンがあります。また、グリッドビュー行に onclick 動作を追加して、行を選択し、フォームに情報を表示します。問題は、Activate コマンドの代わりにボタンをクリックすると、Select コマンドが起動することです。
これが私がこれをした方法です:
<asp:TemplateField>
<ItemTemplate>
<asp:Button CommandName="Activate" ID="btnActivate" runat="server" Text="Activate" CausesValidation="false"></asp:Button>
</ItemTemplate>
<ItemStyle Wrap="false" />
</asp:TemplateField>
次に、ここでコマンドを管理します。
protected void gridview_RowCommand(object sender, GridViewCommandEventArgs e)
{
switch (e.CommandName.ToUpper())
{
case "SELECT":
GridViewRow row1=(GridViewRow)grvCustomerCredit.Rows[Convert.ToInt32(e.CommandArgument)];
selectedRowIndex = row1.RowIndex;
txbCC_CITY.Text = row1.Cells[4].Text;
txbCC_PROVINCE.Text = row1.Cells[5].Text;
row1.ForeColor = System.Drawing.Color.White;
break;
case "ACTIVATE":
GridViewRow row2 = (GridViewRow)((Control)e.CommandSource).Parent.Parent;
creditID = Convert.ToInt32(gridview.DataKeys[row2.RowIndex].Value);
{do the Activate Action}
break;
}
}
これは、各行に onclick を追加する方法です。
protected override void Render(System.Web.UI.HtmlTextWriter writer)
{
foreach (GridViewRow row in gridview.Rows)
{
row.Attributes.Add("onclick", Page.ClientScript.GetPostBackEventReference(gv, "Select$" + row.RowIndex.ToString(), true));
}
base.Render(writer);
}
グリッドビュー行のアクティブ化ボタンに onclick を追加する前は、正常に機能していました。行のクリックではなく、ボタンのクリックを最優先に設定するにはどうすればよいですか? 何か案が?