1

私は 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 を追加する前は、正常に機能していました。行のクリックではなく、ボタンのクリックを最優先に設定するにはどうすればよいですか? 何か案が?

4

1 に答える 1

0
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);
}

この関数では、「select」について言及しているため、select関数のみを使用します。に置き換えます

 row.Attributes.Add("onclick", Page.ClientScript.GetPostBackEventReference(gv, "ACTIVATE$" + row.RowIndex.ToString(), true));
于 2012-06-21T07:23:50.887 に答える