동일한 책 제목을 장바구니에 삽입 할 때 데이터 테이블을 업데이트하려고했습니다. 양의데이터 테이블의 값을 업데이트하십시오.
public bool checkBook(DataTable dt, String title)
{
bool returnval = false;
try
{
foreach (DataRow dr in dt.Rows)
{
String checktitle = dr["Title"].ToString();
if (title == checktitle)
{
int a = Convert.ToInt32(dr["quantity"].ToString());
dr["quantity"] = a + 1;
returnval = true;
}
}
}
catch (Exception ex)
{
//do something
}
return returnval;
}
초기 값은 1입니다,하지만 버튼이 제출되었을 때, 수량은 여전히 1이지만, 세 번째 시간을 입력 할 때 숫자가 하나 증가하기 시작했다. 나는 실수가 어디인지 이해하지 못한다.
편집 :
protected void ListView1_SelectedIndexChanged(object sender, EventArgs e)
{
String title = ((Label)(ListView1.Items[ListView1.SelectedIndex].FindControl("Title"))).Text; ;
decimal price = decimal.Parse(((Label)(ListView1.Items[ListView1.SelectedIndex].FindControl("Price"))).Text);
cart cart = new cart(title, price);
if (HttpContext.Current.Session["Cart"] != null)
{
DataTable shoppingcart = (DataTable)HttpContext.Current.Session["Cart"];
bool check = checkBook(shoppingcart, title);
if (check != true)
{
ShoppingCart.DataSource = cart.cartrow(shoppingcart);
ShoppingCart.DataBind();
}
else
{
// if is true, it suppose to increase the quantity here
}
}
}
else
{
HttpContext.Current.Session["Cart"] = cart.shoppingCart();
ShoppingCart.DataSource = cart.shoppingCart();
ShoppingCart.DataBind();
}
}
클래스 ::
당신은 문제가 무엇인지 결정하기 위해 코드의 더 많은 것을 보여줄 필요가String title { get; set; }
decimal price { get; set; }
int quantity = 1;
DataTable CartTable;
DataRow tableRow;
public cart(String _title, decimal _price)
{
title = _title;
price = _price;
}
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");
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;
}
public DataTable cartrow(DataTable _cart)
{
tableRow = _cart.NewRow();
tableRow["Title"] = title;
tableRow["Price"] = price;
tableRow["quantity"] = quantity;
_cart.Rows.Add(tableRow);
return _cart;
}
질문이 명확하지 않습니다. 더 자세히 설명해주십시오. '버튼'은 어디에 있습니까? 버튼을 제출하면 무엇을 의미합니까? – jams
질문이 명확하지 않습니다. 데이터 테이블의 스키마를 제공하십시오. html 마크 업으로 전체 코드를 제공하십시오. –
동일한 책 추가 - 장바구니를 누를 때 문제가 발견되었습니다. 처음에는 추가하지 않았지만 같은 URL을 가져 와서 다른 탭에서 열 때 하나에서 두 개까지 추가됩니까? 내 코딩에 문제가 있습니까? – eugene