每次选择按钮时,我都会尝试填充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; }
}
答案 0 :(得分:2)
目前,每次点击按钮时,您都会创建一个新变量(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,那么对象本身也会从每个请求的范围中删除,因此您需要将数据保留在其他位置。会话状态,数据库等
答案 1 :(得分:0)
每次点击该按钮时,您都会创建一个新的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();
}
}
}