如何在动态生成的网格视图中删除行?

时间:2014-01-12 11:35:03

标签: asp.net gridview cart

你好尊敬的先生,

我正在生成一个购物车,如订购系统,我在其中添加/绑定从DataTable到GridView的productname,productprice和productquantity。

我已将GridButton添加到gridview,仅用于删除所选行。

我也知道我们无法从动态生成的网格视图中删除行。所以我在ImageButton Click事件中放置了一个代码,该事件从DataTable中删除该行(在整个过程中为STATIC),并再次使用GridView绑定数据。

请注意我已经在我的“BTN_ADD TO CART_Clicked”中使用gridview绑定了数据。

这是我的代码段,

protected void gvorderlist_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName == "Delete")
    {
        int index = Convert.ToInt32(e.CommandArgument);

        DataRow row = dt.Rows[index];
        dt.Rows.Remove(row);
        gvorderlist.DataSource = dt;
        gvorderlist.DataBind();
    }
}

和ASP代码是,

<asp:GridView ID="gvorderlist" runat="server" CellPadding="4" 
    ForeColor="#333333" GridLines="None" AllowPaging="True" PageSize="5" 
    onpageindexchanging="gvorderlist_PageIndexChanging" 
    onrowcommand="gvorderlist_RowCommand">
    <AlternatingRowStyle BackColor="White" />
    <Columns>
        <asp:TemplateField HeaderText="Cancel Order" ShowHeader="False">
            <ItemTemplate>
                <asp:ImageButton ID="ImgbtnCancelOrder" runat="server" CausesValidation="false" 
                     ImageUrl="~/images/cross.PNG" OnClientClick="Javascript: return confirm('Aap Chutiye hai');" CommandName="Delete"
                    CommandArgument="<%# ((GridViewRow) Container).RowIndex %>"/>
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

我收到一条错误消息:GridView'gvorderlist'触发了未处理的事件RowDeleting。

任何帮助将不胜感激...... 谢谢

3 个答案:

答案 0 :(得分:1)

错误解释了一切。您需要在标记中定义OnRowDeleting的事件方法:

<asp:GridView ID="gvorderlist" runat="server" CellPadding="4" 
    ForeColor="#333333" GridLines="None" AllowPaging="True" PageSize="5" 
    onpageindexchanging="gvorderlist_PageIndexChanging" 
    onrowcommand="gvorderlist_RowCommand" OnRowDeleting="gvorderlist_RowDeleting">
    <AlternatingRowStyle BackColor="White" />
    <Columns>
        <asp:TemplateField HeaderText="Cancel Order" ShowHeader="False">
            <ItemTemplate>
                <asp:ImageButton ID="ImgbtnCancelOrder" runat="server" CausesValidation="false" 
                     ImageUrl="~/images/cross.PNG" OnClientClick="Javascript: return confirm('Aap Chutiye hai');" CommandName="Delete"
                    CommandArgument="<%# ((GridViewRow) Container).RowIndex %>"/>
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

在代码中添加一个空方法:

protected void gvorderlist_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
    // No need to implement code here
}

答案 1 :(得分:0)

GridView的属性区分大小写,因此将onrowcommand更改为OnRowCommand,并查看单击删除按钮时是否会触发。如果没有,您需要明确定义OnRowDeleting。 (也改变onpageindexingchange的大小写)

答案 2 :(得分:0)

提供Command Name= D ,而不是删除。它会在Row_Deleting Command Name = 时搜索Delete个事件。