使用C#在textchanged事件上将新项目添加到转发器

时间:2018-07-15 19:05:11

标签: c# asp.net

我正在尝试使用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();
    }
}

0 个答案:

没有答案