需要一些关于ArrayList的建议或数据库的替代方法

已加入
2015年1月4日
留言内容
11
编程经验
1-3
大家好

我今天做了5个小时的研究,并在cSharpforums.net上找到了此链接 http://www.sarahs-loft.com/windows-forms/1145-fill-listview-arraylist-text-file.html

我是否应该使用Arraylist有点困惑。

我需要一些关于我的逻辑思维的建议。

I have a dataGrid that reads from sql database , I want user to select a item that has a price and I 只想将该价格加到小计 until the user decided to stop shopping.

这是我的代码示例,它可以正常工作,但是只有一次,我需要可以循环播放的内容,直到用户没有选择任何内容
        private void txtAddToInvoice_Click(object sender, EventArgs e)
        {
            // Select the value from table that user has selected product 
            DataGridViewRow dr = tbl_ProductDetailsDataGridView.SelectedRows[0];
            
            string UnitPriceS; // String value 
            int Quantity;
            decimal total;
            decimal subTotal;
            ArrayList SubtotalList = new ArrayList();
            
            btnGenerateInvoice.Enabled = true;

            // storing the value that user has click  to UnitPrices
            UnitPriceS = dr.Cells[3].Value.ToString();

           decimal UnitPrice = Math.Round(Convert.ToDecimal(UnitPriceS), 2);

           Quantity = Convert.ToInt32(txtQuantity.Text);

           total = UnitPrice * Quantity;

           SubtotalList.Add(total);

            // count array
           int count = SubtotalList.Count;           
            
                listBox1.Items.Add(count);

            MessageBox.Show(count.ToString());
        }


我希望以上是合理的

我需要一些认真的建议,任何支持将不胜感激
 
由主持人最后编辑:

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,525
地点
悉尼,澳大利亚
编程经验
10+
首先,不,您不应该使用ArrayList。其次,您有一个DataGridView,而不是DataGrid。它们不是同一件事,因此名称不同。最后,你说你"只想将该价格加到小计"但是代码表明您还需要更多。也许您应该首先提供对您要发生的情况以及问题所在的完整描述。当您不知道实际应该做什么时,很难编写代码。
 
已加入
2015年1月4日
留言内容
11
编程经验
1-3
首先,不,您不应该使用ArrayList。其次,您有一个DataGridView,而不是DataGrid。它们不是同一件事,因此名称不同。最后,你说你"只想将该价格加到小计"但是代码表明您还需要更多。也许您应该首先提供对您要发生的情况以及问题所在的完整描述。当您不知道实际应该做什么时,很难编写代码。


嗨Jmcilhinney

感谢您的回复,我是诵读困难的人,写作是我需要掌握的东西,Attach是我刚刚完成的逻辑图,还有屏幕转储,
希望能为您提供更多信息。请忽略上面的代码。我只是编写了这个新的测试示例,就可以解决该示例中的问题,因为它是我想要的。我有一个购物车应用程序,当用户单击行时即连接到shop.mdf数据库和tbl_shopping_list,即选择要在列表框中显示的产品。通过单击添加到列表顺序按钮。这就是我现在陷入困境的地方,找不到逻辑,当用户单击“生成发票”时,我需要一些如何将productPrice复制/读取到数组中,因此arraylist在intelisense中很明显。但我知道您为什么要声明我们不应该使用这种方法。将小计和选择的产品添加到文本文件或pdf作为发票。


我希望以上内容足以使我正试图实现的目标公正。
 

附件

  • 购物清单
    购物清单
    30.1 KB · Views: 44
  • 逻辑购物车
    逻辑购物车
    19.1 KB · Views: 41
已加入
2015年1月4日
留言内容
11
编程经验
1-3
再次嗨,我创建了一个按钮调用测试代码,以查看是否可以解决我的问题,这里是该代码,并添加了一个文本框调用txtQuantity

我有大约85%的作品,只需要弄清楚几件事

当用户选择一个项目时,该项目具有价格,并且现在存储在一个名为ArrayTotal []的变量中,每次用户在消息框中单击“是”按钮时,for next语句就会进行排序,从而增加变量计数。问题是它不断陷入循环,甚至即使break命令都无法正常工作,任何想法都会大打折扣

我刚刚花了3个小时从该站点学习Array的基础知识 Visual C#.NET-在运行时设置数组的大小
        private void btnTestCode_Click(object sender, EventArgs e)
        {
            // store values from DataGridViewRow to variables
            string UnitPriceS; // String value 
            int Quantity;
           
            decimal total;
            decimal[] arrayTotal;

            // Select the value from table that user has selected product 
            DataGridViewRow dr = tbl_ProductDetailsDataGridView.SelectedRows[0];

            // storing the value that user has click  to UnitPrices
            UnitPriceS = dr.Cells[3].Value.ToString();

            // Convert hte UnitPriceS string value to decimal variable UnitPrice
            decimal UnitPrice = Math.Round(Convert.ToDecimal(UnitPriceS), 2);

            // Convert text box Quantity to interger variable Quantity whole number.
            Quantity = Convert.ToInt32(txtQuantity.Text);

            // arrary Initialization Zero 
            arrayTotal = new decimal[12];

            for (int count = 0; count != (arrayTotal.Length); count++)
            {
                DialogResult m = MessageBox.Show("Add another Order?", "Add", MessageBoxButtons.YesNo);
                // Sum  UnitPrice Multiply by Quantity
                total = UnitPrice * Quantity;
                if (m == DialogResult.Yes)
                {
                    arrayTotal[count] = total;

                    MessageBox.Show("Yes button press array value  :  " + arrayTotal[count].ToString() + "your array count index Value is : " + count.ToString());
                }
                else if (m == DialogResult.No)
                {
                    arrayTotal[count] = total;
                    MessageBox.Show("total bill:" + total.ToString() + " ArraryCount Value:" + arrayTotal[count].ToString() + "Your Count index value:" + count.ToString());
                    break; // break out of loop 
                }
            } // end of for statement
        }
 
由主持人最后编辑:
最佳 底部