C# 比较数据表中的值
我试图在一个datatable上比较新值和现有datatable,如果可用,quantity将相加,但如果不可用,它将在datatable中添加一行C# 比较数据表中的值,c#,asp.net,datatable,C#,Asp.net,Datatable,我试图在一个datatable上比较新值和现有datatable,如果可用,quantity将相加,但如果不可用,它将在datatable中添加一行 if (HttpContext.Current.Session["Cart"] != null) { DataTable shoppingcart = (DataTable)HttpContext.Current.Session["Cart"]; for (int i = 0; i < shoppingcart.Rows.Co
if (HttpContext.Current.Session["Cart"] != null)
{
DataTable shoppingcart = (DataTable)HttpContext.Current.Session["Cart"];
for (int i = 0; i < shoppingcart.Rows.Count; i++)
{
String checktitle = shoppingcart.Rows[i]["Title"].ToString();
if (title == checktitle)
{
//do something
}
else
{
ShoppingCart.DataSource = cart.cartrow(shoppingcart);
ShoppingCart.DataBind();
}
}
}
else
{
HttpContext.Current.Session["Cart"] = cart.shoppingCart();
ShoppingCart.DataSource = cart.shoppingCart();
ShoppingCart.DataBind();
}
}
您运行以下代码:
ShoppingCart.DataSource = cart.cartrow(shoppingcart);
ShoppingCart.DataBind();
每次您的条件为false时:title==checktitle
我不确定这是不是错误,但您应该构建一些不同的东西,比如:
if (HttpContext.Current.Session["Cart"] != null)
{
DataTable shoppingcart = (DataTable)HttpContext.Current.Session["Cart"];
//put here each row you need to bind
DataTable toBind = new DataTable(); //do more to init the columns, rows, etc
for (int i = 0; i < shoppingcart.Rows.Count; i++)
{
String checktitle = shoppingcart.Rows[i]["Title"].ToString();
if (title == checktitle)
{
//do something
}
else
{
toBind.add(cart.cartrow(shoppingcart)); //the sintax here is incorect, I code directly here
//ShoppingCart.DataSource = cart.cartrow(shoppingcart);
//ShoppingCart.DataBind();
}
}
//bind outside the for cicle
ShoppingCart.DataSource = toBind ;
ShoppingCart.DataBind();
}
else
{
HttpContext.Current.Session["Cart"] = cart.shoppingCart();
ShoppingCart.DataSource = cart.shoppingCart();
ShoppingCart.DataBind();
}
}
我希望这能为您更正代码提供指导。我将其直接编码到浏览器中,不记得初始化数据表或向其中添加行的确切语法 也许您可以使用foreach:
if (HttpContext.Current.Session["Cart"] != null)
{
DataTable shoppingcart = (DataTable)HttpContext.Current.Session["Cart"];
foreach (DataRow row in shoppingcart.Rows)
{
String checktitle = row["Title"].ToString();
int price = row["price"].ToString();
int quantity = row["quantity"].ToString();
if (title == checktitle)
{
//do something
}
else
{
Session["Cart"] = cart.cartrow(shoppingcart,checktitle,price,quantity);
ShoppingCart.DataSource = Session["Cart"] as DataTable();
ShoppingCart.DataBind();
}
}
}
你的马车
public DataTable cartrow(DataTable _cart,string title,int price,int quantity)
{
tableRow = _cart.NewRow();
tableRow["Title"] = title;
tableRow["Price"] = price;
tableRow["quantity"] = quantity;
_cart.Rows.Add(tableRow);
return _cart;
}
您的代码没有显示您的要求。您在哪里比较该值、添加数量并创建新行?对不起,我是编程新手。我创建了一个类来运行我的行添加,修改了tableCollection;枚举操作可能无法执行。
public DataTable cartrow(DataTable _cart,string title,int price,int quantity)
{
tableRow = _cart.NewRow();
tableRow["Title"] = title;
tableRow["Price"] = price;
tableRow["quantity"] = quantity;
_cart.Rows.Add(tableRow);
return _cart;
}