我正在尝试使用asp.net c#开发一个小型POS Web应用程序,我已经像所有POS软件一样创建了一个用于条形码扫描的文本框,我希望有一个中继器来显示正在扫描的客户物品,以便更新每次扫描添加新行。
到目前为止,我已经创建了List<>
对象,并且尝试使用List.Add()
方法在数据库中查找扫描项目时追加新行,但是databind()
方法总是返回最后扫描的项目;这对我来说似乎很正常,所以我基本上做错了。
任何人都可以提供帮助,或者中继器无法执行此操作。参见下面的代码;我假设添加到列表将追加并保持列表的增长,因为List<>
是在顶级级别定义的。
public partial class POS : System.Web.UI.Page
{
rocketEntities2 posx = new rocketEntities2();
List<item> holdall = new List<item>();
String hold = "";
int i = 0;
protected void Page_Load(object sender, EventArgs e)
{
//var prev = posx.items.OrderByDescending(x=>x.NumberOfSales).Take(200);
var take = from x in posx.items
where x.Name != null
orderby x.Name descending
select new { itemName = x.Name, itemCode = x.Barcode, itemPrice = x.Selling, itemQty = x.CurrentQuantity };
//var prev = posx.items.Select(x=>x.Name != null);
GridView1.DataSource = take.ToList().Take(100);
GridView1.DataBind();
}
protected void scan_TextChanged(object sender, EventArgs e)
{
//IQueryable<item> selected;
if (posx.items.Any(x => x.Barcode == scan.Text))
{
var take = (posx.items.Single(x => x.Barcode == scan.Text));
holdall.Add(take);
// hold += take.Name + "," + take.Selling + "\n";
Repeater1.DataSource = holdall;
positemlist.Text = hold += take.Name + "," + take.Selling + "\n";
}
Repeater1.DataBind();
}
}