Member 11259478 Ответов: 2

Как добавить несколько строк в listview


Всем Привет

У меня есть listview со следующими заголовками столбцов:
значение ProductName
КОЛ-ВО
TotalAmount

У меня есть кнопка AddToCart со следующим кодом:

{
                   
                    ListViewItem lst = new ListViewItem();
                    
                    lst.SubItems.Add(txtProductName.Text);
                    lst.SubItems.Add(txtQTY.Text);
                    lst.SubItems.Add(txtTotalAmount.Text);
                    lst.SubItems.Add(txtPid.Text);
                    lst.SubItems.Add(txtPrice.Text);

                    RegWindow.Items.Add(lst);
                    
                   
                    txtProductCode.Text = "";
                    txtProductName.Text = "";
                    txtQTY.Text = "";
                   
                    txtPrice.Text = "";
                  
                    txtPid.Text = "";
                    txtTotalAmount.Text = "";
                    return;
                }


Это заполняет listview правильной информацией, полученной из текстовых полей

Проблема в том, что приведенный выше код ничего не добавляет После ввода новых значений в текстовые поля

Что мне нужно, чтобы иметь 2 строки в listview после того, как AddToCart снова нажата с новыми значениями текстового поля


Это приложение c# winform

Что я уже пробовал:

У меня было похожее vb.net код который работал 100%

Я попытался скрыть VB-код в c#, но это не сработало
Я только недавно начал кодировать на языке Си#
Заранее спасибо


Ниже кода vb:
Try

            Dim temp As Integer
            temp = ListView1.Items.Count()
            If temp = 0 Then
                Dim i As Integer
                Dim lst As New ListViewItem(i)
                'lst.SubItems.Add(txtProductCode.Text)
                'lst.SubItems.Add(txtProductName.Text)
                'lst.SubItems.Add(txtWeight.Text)
                'lst.SubItems.Add(txtPrice.Text)
                'lst.SubItems.Add(txtCartons.Text)
                'lst.SubItems.Add(CInt(Val(txtAvailablePackets.Text) / Val(txtAvailableCartons.Text)))
                'lst.SubItems.Add(txtPackets.Text)
                'lst.SubItems.Add(txtTotalAmount.Text)

                lst.SubItems.Add(txtProductName.Text)
                lst.SubItems.Add(txtCartons.Text)
                lst.SubItems.Add(txtTotalAmount.Text)
                lst.SubItems.Add(txtPid.Text)
                lst.SubItems.Add(txtPrice.Text)

                ListView1.Items.Add(lst)
                i = i + 1
                txtSubTotal.Text = subtot()
                txtProductCode.Text = ""
                txtProductName.Text = ""
                txtCartons.Text = ""
                'txtWeight.Text = ""
                txtPrice.Text = ""
                'txtAvailableCartons.Text = ""
                'txtSaleID.Text = ""
                txtPid.Text = ""
                txtTotalAmount.Text = ""
                Exit Sub
            End If

            For j = 0 To temp - 1
                If (ListView1.Items(j).SubItems(1).Text = txtProductName.Text) Then
                    ListView1.Items(j).SubItems(1).Text = txtProductName.Text
                    ListView1.Items(j).SubItems(2).Text = txtCartons.Text
                    ListView1.Items(j).SubItems(3).Text = txtTotalAmount.Text
                    ListView1.Items(j).SubItems(4).Text = txtPid.Text
                    ListView1.Items(j).SubItems(5).Text = txtPrice.Text
                    'ListView1.Items(j).SubItems(5).Text = Val(ListView1.Items(j).SubItems(5).Text) + Val(txtCartons.Text)
                    'ListView1.Items(j).SubItems(6).Text = Val(txtAvailablePackets.Text) / Val(txtAvailableCartons.Text)
                    'ListView1.Items(j).SubItems(7).Text = Val(ListView1.Items(j).SubItems(7).Text) + Val(txtPackets.Text)
                    'ListView1.Items(j).SubItems(8).Text = Val(ListView1.Items(j).SubItems(8).Text) + Val(txtTotalAmount.Text)
                    txtSubTotal.Text = subtot()
                    txtProductCode.Text = ""
                    txtProductName.Text = ""
                    txtCartons.Text = ""
                    txtWeight.Text = ""
                    txtPrice.Text = ""
                    txtAvailableCartons.Text = ""
                    'txtSaleID.Text = ""
                    txtPid.Text = ""
                    txtTotalAmount.Text = ""
                    Exit Sub

                End If
            Next j
            Dim k As Integer
            Dim lst1 As New ListViewItem(k)

            'lst1.SubItems.Add(txtProductCode.Text)
            lst1.SubItems.Add(txtProductName.Text)
            'lst1.SubItems.Add(txtWeight.Text)
            lst1.SubItems.Add(txtCartons.Text)

            'lst1.SubItems.Add(Val(txtAvailablePackets.Text) / Val(txtAvailableCartons.Text))
            'lst1.SubItems.Add(txtPackets.Text)
            lst1.SubItems.Add(txtTotalAmount.Text)
            lst1.SubItems.Add(txtPid.Text)
            lst1.SubItems.Add(txtPrice.Text)
            ListView1.Items.Add(lst1)
            k = k + 1
            txtSubTotal.Text = subtot()
            txtProductCode.Text = ""
            txtProductName.Text = ""
            txtCartons.Text = ""
            txtWeight.Text = ""
            txtPrice.Text = ""
            txtAvailableCartons.Text = ""
            'txtSaleID.Text = ""
            txtPid.Text = ""
            txtTotalAmount.Text = ""
            ProdCombo.Text = ""
        Catch ex As Exception
            MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try



Below the converted code from vb to C#:

try {
	int temp;
	temp = ListView1.Items.Count();
	if (temp == 0) {
		int i;
		ListViewItem lst = new ListViewItem(i);
		//lst.SubItems.Add(txtProductCode.Text)
		//lst.SubItems.Add(txtProductName.Text)
		//lst.SubItems.Add(txtWeight.Text)
		//lst.SubItems.Add(txtPrice.Text)
		//lst.SubItems.Add(txtCartons.Text)
		//lst.SubItems.Add(CInt(Val(txtAvailablePackets.Text) / Val(txtAvailableCartons.Text)))
		//lst.SubItems.Add(txtPackets.Text)
		//lst.SubItems.Add(txtTotalAmount.Text)

		lst.SubItems.Add(txtProductName.Text);
		lst.SubItems.Add(txtCartons.Text);
		lst.SubItems.Add(txtTotalAmount.Text);
		lst.SubItems.Add(txtPid.Text);
		lst.SubItems.Add(txtPrice.Text);

		ListView1.Items.Add(lst);
		i = i + 1;
		txtSubTotal.Text = subtot();
		txtProductCode.Text = "";
		txtProductName.Text = "";
		txtCartons.Text = "";
		//txtWeight.Text = ""
		txtPrice.Text = "";
		//txtAvailableCartons.Text = ""
		//txtSaleID.Text = ""
		txtPid.Text = "";
		txtTotalAmount.Text = "";
		return;
	}

	for (j = 0; j <= temp - 1; j++) {
		if ((ListView1.Items(j).SubItems(1).Text == txtProductName.Text)) {
			ListView1.Items(j).SubItems(1).Text = txtProductName.Text;
			ListView1.Items(j).SubItems(2).Text = txtCartons.Text;
			ListView1.Items(j).SubItems(3).Text = txtTotalAmount.Text;
			ListView1.Items(j).SubItems(4).Text = txtPid.Text;
			ListView1.Items(j).SubItems(5).Text = txtPrice.Text;
			//ListView1.Items(j).SubItems(5).Text = Val(ListView1.Items(j).SubItems(5).Text) + Val(txtCartons.Text)
			//ListView1.Items(j).SubItems(6).Text = Val(txtAvailablePackets.Text) / Val(txtAvailableCartons.Text)
			//ListView1.Items(j).SubItems(7).Text = Val(ListView1.Items(j).SubItems(7).Text) + Val(txtPackets.Text)
			//ListView1.Items(j).SubItems(8).Text = Val(ListView1.Items(j).SubItems(8).Text) + Val(txtTotalAmount.Text)
			txtSubTotal.Text = subtot();
			txtProductCode.Text = "";
			txtProductName.Text = "";
			txtCartons.Text = "";
			txtWeight.Text = "";
			txtPrice.Text = "";
			txtAvailableCartons.Text = "";
			//txtSaleID.Text = ""
			txtPid.Text = "";
			txtTotalAmount.Text = "";
			return;

		}
	}
	int k;
	ListViewItem lst1 = new ListViewItem(k);

	//lst1.SubItems.Add(txtProductCode.Text)
	lst1.SubItems.Add(txtProductName.Text);
	//lst1.SubItems.Add(txtWeight.Text)
	lst1.SubItems.Add(txtCartons.Text);

	//lst1.SubItems.Add(Val(txtAvailablePackets.Text) / Val(txtAvailableCartons.Text))
	//lst1.SubItems.Add(txtPackets.Text)
	lst1.SubItems.Add(txtTotalAmount.Text);
	lst1.SubItems.Add(txtPid.Text);
	lst1.SubItems.Add(txtPrice.Text);
	ListView1.Items.Add(lst1);
	k = k + 1;
	txtSubTotal.Text = subtot();
	txtProductCode.Text = "";
	txtProductName.Text = "";
	txtCartons.Text = "";
	txtWeight.Text = "";
	txtPrice.Text = "";
	txtAvailableCartons.Text = "";
	//txtSaleID.Text = ""
	txtPid.Text = "";
	txtTotalAmount.Text = "";
	ProdCombo.Text = "";
} catch (Exception ex) {
	MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}

Maciej Los

А что не так с вашим кодом?

2 Ответов

Рейтинг:
2

Member 11259478

Привет Гизмо

спасибо Вам за решение

Я вижу, что у меня был ниже код (из vb)
int temp;
temp = RegWindow.Предметы.Рассчитывать;
если (temp = = 0)

я удалил этот кусок и это решило мою проблему

Спасибо


Рейтинг:
1

Makinde A.

Если я вас хорошо понимаю, вы хотите, чтобы содержимое этих текстовых полей добавлялось в ListView каждый раз при нажатии кнопки AddToCart. верно?

если да, то обработайте событие Click кнопки AddToCart и вставьте в него свой первый код c#.
например

private void AddToCart_Click(object sender, EventArgs e)
{
   ListViewItem lst = new ListViewItem();
                    
   lst.SubItems.Add(txtProductName.Text);
   lst.SubItems.Add(txtQTY.Text);
   lst.SubItems.Add(txtTotalAmount.Text);
   lst.SubItems.Add(txtPid.Text);
   lst.SubItems.Add(txtPrice.Text);
 
   RegWindow.Items.Add(lst);
                    
                   
   txtProductCode.Text = "";
   txtProductName.Text = "";
   txtQTY.Text = "";                
   txtPrice.Text = "";
   txtPid.Text = "";
   txtTotalAmount.Text = "";

   return;
}