2012-05-06 3 views
0

listview의 버튼을 사용하여 데이터 테이블에서 datarow를 삭제하는 데 문제가 있습니다. 행을 삭제하기 위해 선택한 단추를 사용하려고합니다. 카트에listview 컨트롤을 통해 datatable에서 datarow를 제거하십시오.

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

내가 그것을 삭제하려고하지만 그것은 작동하지 않습니다. 누구든지 나를 도울 수 있습니까?

답변

0

목록보기에서 행을 제거하려면 단순히 데이터 테이블을 찾은 다음 목록을 제거한 다음 다시 목록 뷰에서 항목을 제거하십시오.

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

난 당신의 코드에서 이해할 수 있듯이

, 당신은 세션이 양식을 읽고하지 당신이 목록보기에서 키 값을 가져온 다음 행을 찾을 왜 루프

에 대한과 일치에 DataTable을 유지 datatable.select ("xxxxx == yyyyy")를 사용하여 행을 제거하십시오.

+0

두 가지를 모두 사용해 보았지만 아무 일도 일어나지 않았습니다. – eugene