2008-12-04 107 views
0

我有一個gridview控件,它顯示從數據庫返回的數據。 gridview的datakey屬性綁定到DB的ID列上.GV中的每個記錄都有2個按鈕和一個複選框。當單擊這些控件中的任何一個時,我想獲取單擊它的行,並根據單擊的控件執行操作。gridview控件中的按鈕

我希望我可以使用row_command事件來捕獲單擊的控制,但除非我缺少的東西

回答

0

你分配按鈕CommandNameCommandArgument是沒有做的伎倆?

+0

devio:我跟着這個 http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.rowcommand.aspx – user38230 2008-12-04 20:39:59

0

另外問題可能在於生命週期事件的錯誤順序。你應該儘快將數據重新綁定到你的網格。嘗試移動數據綁定到Page_Init事件

0
Code Behind: 

    protected void gvCustomers_RowCommand(object sender, GridViewCommandEventArgs e) 
     { 
      if (e.CommandName.Equals("RowSelected")) 
      { 
       GridViewRow row = (((e.CommandSource) as Button).NamingContainer) as GridViewRow; 
       Label label = row.FindControl("lblFirstName") as Label; 

       Response.Write(label.Text); 

      } 
     } 

這裏是ASPX查看:

<asp:GridView AutoGenerateColumns="false" ID="gvCustomers" runat="server" OnRowCommand="gvCustomers_RowCommand" > 

    <Columns> 

    <asp:TemplateField> 
    <ItemTemplate> 

    <asp:Label ID="lblFirstName" runat="server" Text ='<%# Eval("FirstName") %>' /> 

    </ItemTemplate> 
    </asp:TemplateField> 

     <asp:TemplateField> 
    <ItemTemplate> 
    <asp:Button Text="Select" ID="btn1" runat="server" CommandArgument ='<%# Eval("FirstName") %>' CommandName="RowSelected" /> 
    </ItemTemplate> 
    </asp:TemplateField> 

    </Columns> 

    </asp:GridView> 
0
<asp:GridView ID="gvProduct" runat="server" AutoGenerateColumns="False" DataKeyNames="ID"OnRowCommand="gvProduct_RowCommand" > 
<Columns> 
    <asp:TemplateField> 
     <ItemTemplate> 
      <asp:ImageButton ID="btnEdit" runat="server" CommandName="EditCommand" Text="Edit" /> 
     </ItemTemplate>           
    </asp:TemplateField> 
<asp:BoundField DataField="ProjectNo" HeaderText="ProjectNo" /> 
<asp:BoundField DataField="Date" HeaderText="Date" /> 
<asp:BoundField DataField="Shift" HeaderText="شیفت" /> 
</Columns>   
</asp:GridView> 

與此代碼:

protected void gvProduct_RowCommand(object sender, GridViewCommandEventArgs e) 
    { 
     if (e.CommandName == "EditCommand") 
     { 
      GridViewRow Row = (GridViewRow)((Control)e.CommandSource).NamingContainer; 
      int productID = Convert.ToInt32(gvProduct.DataKeys[Row.RowIndex].Value); 

      EditFunction(productID); 
     } 
    } 

「EditFunction」 是功能你設置你的代碼選擇的行,我在這裏刪除它。

你需要這樣的東西?