2016-11-15 3 views
0

Я пытаюсь заполнить listview каждый раз, когда выбрана кнопка. На данный момент у меня есть кнопка, заполняющая 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(); 
} 

Примечание что это будет работать только в системе stateful. Если вы случайно используете 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(); 
     } 
    } 
}