Click here to Skip to main content
15,921,203 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
Hi All

I have a listview with the following column headers:
ProductName
QTY
TotalAmount

I have a button AddToCart with the following code:

C#
{
                   
                    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;
                }


This fills the listview with the correct info retrieved from textboxes

The problem is that above code does not add anything after entering new values in the textboxes

What do i need to have 2 rows in the listview after AddToCart is pressed again with new textbox values


This is a c# winform application

What I have tried:

I had similar vb.net code which worked 100%

I tried coverting the vb code into c# but it does not work
I have only recently started to code in C#
Thank you in advance


Below the vb code:
VB.NET
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);
}
Posted
Updated 24-Aug-16 19:04pm
v2
Comments
Maciej Los 24-Aug-16 16:23pm    
And what's wrong with your code?

If I understand you well, you want the content of those textBoxes to be added to the ListView each time the AddToCart button is been clicked. right?

if yes then handle the Click Event of the AddToCart button and paste your first c# code in it.
for example

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;
}
 
Share this answer
 
HI Gizmo

thank you for the solution

I see that i had below code (From vb)
int temp;
temp = RegWindow.Items.Count;
if (temp == 0)

i removed this piece and it solved my problem

Thanks
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900