使用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; }
}
当前,每次单击按钮时都创建一个新变量(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();
}
}
}