【问题标题】:remove datarow in datatable through listview control通过listview控件删除数据表中的数据行
【发布时间】:2023-03-11 15:04:02
【问题描述】:

我在使用列表视图中的按钮从数据表中删除数据行时遇到问题。我正在尝试使用选中的按钮来删除该行。

protected void ShoppingCart_SelectedIndexChanged(object sender, EventArgs e)
{

     String title = ((Label)(ShoppingCart.Items[ShoppingCart.SelectedIndex].FindControl("Title"))).Text;
    DataTable shoppingcart = (DataTable)HttpContext.Current.Session["Cart"];
    DataRow[] rows = shoppingcart.Select("Title ='" + title + "'");

    for (int i = rows.Length - 1; i >= 0; i--)
    {
        shoppingcart.Rows.Remove(rows[i]);
    }

    shoppingcart.AcceptChanges();
    ShoppingCart.DataSource = shoppingcart;
    ShoppingCart.DataBind();
}

购物车的列表视图::

 <asp:ListView ID="ShoppingCart" runat="server" onselectedindexchanged="ShoppingCart_SelectedIndexChanged" 
        >

<ItemTemplate>
<table>
<tr>
<td>
<asp:Label ID="idlabel1" runat="server" Text='<%#Eval("id") %>' />
</td>
<td>
<asp:Label ID="titlelabel" runat="server" Text='<%# Eval("Title")%>'></asp:Label>
</td>
<td>
<asp:Label ID="pricelabel" runat="server" Text='<%#Eval("Price") %>'></asp:Label>
</td>
<td>
    <asp:TextBox ID="quantitytb" runat="server" Width="50px" Text='<%#Eval("quantity") %>'></asp:TextBox>
</td>
<td>
    <asp:Label ID="subtotallabel" runat="server" Text='<%#getsubtotal(decimal.Parse(Eval("Price").ToString()), int.Parse(Eval("quantity").ToString())) %>'></asp:Label>
</td>
<td>
    <asp:Button ID="Button1" runat="server" Text="-" Font-Names="Web Symbols" CommandName="Select"/>
</td>
</tr>
</table>
</ItemTemplate>

</asp:ListView>

类::

public DataTable shoppingCart()
{
    CartTable = new DataTable("cart");

    CartTable.Columns.Add("ID", typeof(Int32));
    CartTable.Columns["ID"].AutoIncrement = true;
    CartTable.Columns["ID"].AutoIncrementSeed = 1;

    CartTable.Columns.Add("Title",typeof(String));
    CartTable.Columns.Add("Price");
    CartTable.Columns.Add("quantity");
    CartTable.Columns["quantity"].DataType = typeof(Int32);


    tableRow = CartTable.NewRow();
    tableRow["Title"] = title;
    tableRow["Price"] = price;
    tableRow["quantity"] = quantity;
    CartTable.Rows.Add(tableRow);
    return CartTable;
}

我尝试删除它,但它不起作用。谁能帮帮我?

【问题讨论】:

    标签: c# asp.net listview datatable datarow


    【解决方案1】:

    如果您想从列表视图中删除该行,那么只需从列表视图中删除该项目,而不是找到数据表然后删除并再次绑定它。

    if (ListView1.SelectedItems.Count > 0)
          ListView1.SelectedItems[0].Remove();
    

    我可以从您的代码中了解到,您将 DataTable 保持在会话中并在那里读取表单并与 for 循环匹配

    为什么不从列表视图中获取一个键值,然后使用 datatable.select("xxxxx == yyyyy") 找到该行,然后删除该行。

    【讨论】:

    • 我尝试使用两者,但没有任何反应
    猜你喜欢
    • 2016-03-14
    • 2015-08-18
    • 1970-01-01
    • 1970-01-01
    • 2014-01-28
    • 1970-01-01
    • 2023-03-22
    • 2015-12-03
    • 2013-07-12
    相关资源
    最近更新 更多