Asp GridView在整行上触发Click事件

时间:2014-02-22 16:18:20

标签: c# asp.net gridview

我的GridViewIDNameType

代码背后:

protected void gridView_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        e.Row.Attributes["onclick"] = ClientScript.GetPostBackClientHyperlink(this.gridView, "Select$" + e.Row.RowIndex);
    }
}

public void gridView_Command(object sender, GridViewCommandEventArgs e)
{
   // some code here //
}

GridView

<asp:GridView ID="gridView" runat="server" OnRowCommand="gridView_Command" />
<columns>
    <asp:BoundField DataField="ID" />
    <asp:HyperLinkField DataTextField="Name" />
    <asp:BoundField DataField="Type" />
</columns>

由于HyperlinkField,Name已启用。这里的问题是如果单击该行,我不希望触发gridview_Command。我只想要Name字段。例如,如果点击Type的列,则不要触发gridView_Command

1 个答案:

答案 0 :(得分:1)

目前还不清楚你想要达到的目标,但如果我理解正确,你需要改变一些事情。

  1. 您需要将列包装在<asp:Gridview>标记内。
  2. 您需要连接RowDataBound事件。
  3. 您需要创建模板列,以便可以使用CommandName参数。
  4. 您需要在事件中过滤CommandName参数,以便仅响应所需控件的点击。
  5. <asp:GridView ID="gridView" runat="server" OnRowDataBound="gridView_RowDataBound" OnRowCommand="gridView_Command" AutoGenerateColumns="false" > <columns> <asp:BoundField DataField="ID" /> <asp:TemplateField> <ItemTemplate> <asp:LinkButton ID="lb1" runat="server" Text='<%# Eval("Name") %>' CommandName="NameButton" CommandArgument='<%# Eval("ID") %>' /> </ItemTemplate> </asp:TemplateField> <asp:BoundField DataField="Type" /> </columns> </asp:GridView>

    public void gridView_Command(object sender, GridViewCommandEventArgs e)
    {
        if (e.CommandName == "NameButton")
        {
            var id = e.CommandArgument;
    
            // some code here //
        }
    }
    

    使用此示例,您只能响应点击“NameButton”的事件。