2014-01-12 87 views
0

尊敬的先生们,如何删除动态生成网格视图中的一行?

我正在生成购物车,如订购系统,其中我将产品名称,产品价格和productquantity从DataTable添加/绑定到GridView。

我已经添加一个ImageButton到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这是不处理。

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

+0

将DataTable绑定到Datagridview后,datatable中的更改会自动反映在datagridview中。在按钮单击事件检索唯一列值并从数据表中删除。 –

+0

PrakashVishwakarma,你是否试图建议我,我不应该再次在“删除按钮单击事件”中绑定gridview? – user3160395

+0

在imagebutton点击事件,我检索行索引,我想删除哪一行然后我做上面提到的代码...所以请指导我,如果有任何错误 – user3160395

回答

1

错误解释了一切。您需要todefine事件方法​​在标记:

<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 
} 
0

为GridView的属性是大小写敏感的,所以更改onrowcommandOnRowCommand,看看是否触发当你点击删除按钮。如果不是,则需要明确定义OnRowDeleting。 (也改变onpageindexingchange的大小写)

0

Command Name=D,而不是删除。当Command Name =Delete时,它搜索Row_Deleting事件。