我有一個gridview控件,它顯示從數據庫返回的數據。 gridview的datakey屬性綁定到DB的ID列上.GV中的每個記錄都有2個按鈕和一個複選框。當單擊這些控件中的任何一個時,我想獲取單擊它的行,並根據單擊的控件執行操作。gridview控件中的按鈕
我希望我可以使用row_command
事件來捕獲單擊的控制,但除非我缺少的東西
我有一個gridview控件,它顯示從數據庫返回的數據。 gridview的datakey屬性綁定到DB的ID列上.GV中的每個記錄都有2個按鈕和一個複選框。當單擊這些控件中的任何一個時,我想獲取單擊它的行,並根據單擊的控件執行操作。gridview控件中的按鈕
我希望我可以使用row_command
事件來捕獲單擊的控制,但除非我缺少的東西
你分配按鈕CommandName
和CommandArgument
是沒有做的伎倆?
另外問題可能在於生命週期事件的錯誤順序。你應該儘快將數據重新綁定到你的網格。嘗試移動數據綁定到Page_Init事件
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>
<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」 是功能你設置你的代碼選擇的行,我在這裏刪除它。
你需要這樣的東西?
devio:我跟着這個 http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.rowcommand.aspx – user38230 2008-12-04 20:39:59