1

我目前正忙于一个用户界面应用程序,我真的需要一些帮助。

我的应用程序的主窗口

单击“新订单”后,会出现一个用户输入窗口,允许用户输入客户的详细信息并选择客户希望订购的产品

用户输入表单

选择某些产品会出现网格,允许用户根据客户需要指定每个面板、门或柱的尺寸。

填妥的输入表格

最后,一旦用户单击“保存”,就会出现两个输出表单。一个用于栅栏制造,另一个用于钢铁车间。输出表格包含根据客户规格生产面板等的确切机器制造规格。(这个后面会和实机集成)

在此处输入图像描述

现在...我真的希望能够保存输入表单,以便用户稍后可以重新打开订单并进行更改或将产品添加到现有订单中。

理想的做法是在主窗口中有一个选项来打开一个表单,该表单显示保存在客户代码下的所有订单、工作编号,也许还有 dateStamp。一旦用户选择了任何一个订单,INPUT窗口应该打开该特定订单的输入,允许用户添加产品并保存在新的日期戳下。

使用 iTextSharp将输出表单保存为 PDF,并打印出来。然而,这些文件保持不变。

每个 Datagrids 都暂时与 DataTables 绑定,但客户详细信息只是存储在变量中的文本框。((输入值经过一系列计算,用于在 excel 表中执行 LOOKUP,以返回制造所需的信息和零件索引))

我也尝试创建一个数据库,但我无法让它工作。大多数客户和订单数据库都依赖于相关的列,例如产品代码、客户代码等。但是,我基本上只有信息表。很难将多个数据网格绑定到特定客户。当所有数据网格几乎都具有相同的列时,它就更难了。高度、宽度、数量等...

如果有人因为我的愚蠢而有任何建议或激烈的反应……我真的很感激。这是我的第一个 C# 应用程序......老实说,我的第一个实际用户应用程序。我需要开始使用 VHDL

提前致谢

赫尔曼·维奎尔

4

2 回答 2

1

从应用程序本身退后一步,考虑您正在创建的实际对象是什么。似乎您会从创建诸如客户、订单等类中获得很多好处……您不一定需要数据库,文本文件也可以正常工作。通读以下CodeProject 文章,了解面向对象设计概念的基本概述,然后考虑重构应用程序以使用类如何帮助您持久化数据。

提示:序列化将使持久化和检索您的类变得更加容易。

于 2013-04-02T13:39:31.937 回答
0

只是想如果其他人有类似的问题,我会回答这个问题。

在保存数据方面,数据库是最好的选择。当您有多个用户时。写入文本文件将导致权限问题。我遇到的问题是没有任何列可以用作外键。如果您想将不同的表与一个客户或订单相关联,这当然是一个问题。

我解决此问题的方法是将每个列数组合并为一个字符串

此代码读取 Double-Swing Gate DatagridView 并将其合并为单个字符串...读取方法是我自己的。很简单

if (ds_checkBox.Checked)
            {
                int numberOfRows_ds = RowCount_gateDouble();

                ds_Qty = ReadGateDoubleQty(numberOfRows_ds);
                ds_Height = ReadGateDoubleHeight(numberOfRows_ds);
                ds_Width = ReadGateDoubleWidth(numberOfRows_ds);
                ds_total = CalculateTotal_Gates(ds_Qty, numberOfRows_ds);

                string dsgtemp1 = ConvertStringArrayToStringJoin(ds_Qty);
                string dsgtemp2 = ConvertStringArrayToStringJoin(ds_Height);
                string dsgtemp3 = ConvertStringArrayToStringJoin(ds_Width);


                gateDS_data = string.Format("{0}\r\n{1}\r\n{2}", dsgtemp1, dsgtemp2, dsgtemp3);

                visible_ds = 1;
        }

这允许您将数据网格存储到数据表中的一个单元格中。因此,对于每个订单,您基本上都有一个 dataRow。一行包含客户的基本详细信息和订单信息。我的现在有点复杂,因为客户的订单分为三个阶段,报价 -> 订单 -> 发票。但是,关键是,所有输入都在一个方便的地方。

然后,无论出于何种原因,您都可以轻松地在每个相应的数据网格或文本框上显示订单信息

 ds_checkBox.Checked = true;

                    string theGate_ds = stringArray1[13].ToString();
                    string[] lines_gate_ds = theGate_ds.Split(new string[] { "\r\n", "\n" }, StringSplitOptions.None);
                    string[] gate_ds_qty = lines_gate_ds[0].Split('.');
                    string[] gate_ds_height = lines_gate_ds[1].Split('.');
                    string[] gate_ds_width = lines_gate_ds[2].Split('.');

                    for (int i = 0; i < gate_ds_qty.Length; i++)
                    {
                        // Create a new row.
                        InputDataSet.Gate_ds_InputRow newOutputRow;

                        newOutputRow = inputDataSet1.Gate_ds_Input.NewGate_ds_InputRow();

                        newOutputRow.gate_ds_qty = string.Format("{0}", gate_ds_qty[i]);
                        newOutputRow.gate_ds_height = string.Format("{0}", gate_ds_height[i]);
                        newOutputRow.gate_ds_width = string.Format("{0}", gate_ds_width[i]);

                        // Add the row to the Region table 
                        this.inputDataSet1.Gate_ds_Input.Rows.Add(newOutputRow);
                        // Save the new row to the database 
                    } 

我用过 MySql,值得学习如何使用任何类型的数据库

于 2013-05-13T13:09:34.247 回答