使用c#类多次填充listview

本文关键字:填充 listview 使用 | 更新日期: 2023-09-27 18:17:58

每次选择按钮时,我都试图填充listview。目前我有按钮填充listview每次一次。每次输入一个新值,它将覆盖当前的listview

我希望能够添加一个新项目,并继续,直到有多行。

protected void btnAddSkuBarcode_Click(object sender, EventArgs e)
{
    var SKUS = new List<SkuBar>
    {
        new SkuBar {SkuBarcode = txtSkuBarcode.Text , Qty = txtQty.Text},
    };
    lvWebLabels.DataSource = SKUS;
    lvWebLabels.DataBind();
}
public class SkuBar
{
    public string SkuBarcode { get; set; }
    public string Qty { get; set; }
}

使用c#类多次填充listview

当前,每次单击按钮时都创建一个新变量(SKUS)。当您绑定到新列表时,您将失去先前绑定到该控件的任何内容。

由于列表需要保存在比方法更大的作用域中,因此将其放在类作用域中:

List<SkuBar> SKUS = new List<SkuBar>();

然后添加到现有列表中:

protected void btnAddSkuBarcode_Click(object sender, EventArgs e)
{
    SKUS.Add(new SkuBar {SkuBarcode = txtSkuBarcode.Text , Qty = txtQty.Text});
    lvWebLabels.DataSource = SKUS;
    lvWebLabels.DataBind();
}

注意,这只能在有状态系统中工作。如果碰巧使用的是WebForms,那么对象本身也会从每个请求的作用域中删除,因此需要在其他地方持久化数据。会话状态、数据库等

每次单击按钮时,您都创建了一个新的List<T>,因此您失去了前一个。在按钮外定义List<T>,以便它可以被重复使用:

namespace YourNamespace
{
    public class YourClass
    {
        List<SkuBar> SKUS;
        public YourClass() // Or form load or whatever
        {
            SKUS = new List<SkuBar>();
        }
        protected void btnAddSkuBarcode_Click(object sender, EventArgs e)
        {
            SKUS.Add(new SkuBar {SkuBarcode = txtSkuBarcode.Text , Qty = txtQty.Text});
            lvWebLabels.DataSource = SKUS;
            lvWebLabels.DataBind();
        }
    }
}