2016-11-15 36 views
0

我試圖在每次選擇一個按鈕時填充listview。目前我每次都有按鈕填充listview一次。每次輸入新值時,它都會覆蓋當前的listview使用C#類型多次填充列表視圖

我想能夠添加一個新項目並繼續,直到有多行。

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; } 
} 

回答

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,那麼對象本身也會從每個請求的範圍中刪除,因此您需要將數據保存在其他地方。會話狀態,數據庫等

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(); 
     } 
    } 
}