2014-02-22 99 views
2

我有一個GridView它有ID,NameTypeAsp GridView觸發整行上的Click事件

後面的代碼:

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> 

Name就是點擊啓用,因爲HyperLinkField字段的。這裏的問題是我不希望gridview_Command如果行被點擊觸發。我只想要Name字段。例如,如果單擊了Type的列,請不要觸發gridView_Command

+0

您是否在每次回發時都將數據綁定到網格上? –

+0

是的,我每回發一次 – Gerald

+0

我編輯了我的問題。它不應該是'gridView_RowDataBound'。對困惑感到抱歉。 – Gerald

回答

1

這並不清楚你想要達到的目標,但是如果我理解正確,你需要改變一些東西。

  1. 您需要將您的列包裝在<asp:Gridview>標記中。
  2. 您需要連接RowDataBound事件。
  3. 您需要創建一個模板列,以便您可以使用CommandName參數。
  4. 您需要篩選事件中的CommandName參數,以僅響應所需控件的單擊。

<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」。

+0

我需要改變的東西中的第一項只是一個錯字錯誤。但是,這做了我想要的東西。謝謝! – Gerald