簡體   English   中英

如何保存用戶輸入表單,以便以后可以打開和編輯它? C#

[英]How to save User-Input Form, To be able to open & edit it later? C#

我目前正在使用用戶界面應用程序,我確實需要一些幫助。

我的應用程序的主窗口

單擊“新訂單”后,將出現一個“用戶輸入”窗口,允許用戶鍵入客戶的詳細信息並選擇客戶希望訂購的產品

用戶輸入表

選擇某些產品會顯示網格,允許用戶根據客戶需要指定每個面板,門或支柱的尺寸。

填寫完整的輸入表格

最后,一旦用戶單擊“保存”,將出現兩個“ 輸出”表單。 一個用於柵欄制造,另一個用於鋼結構車間。 輸出表格包含准確的機械制造規格,以根據客戶規格生產面板等。 (稍后將與實際機器集成)

在此處輸入圖片說明

現在...我真的很希望能夠保存INPUT表單,以便用戶以后可以重新打開訂單並進行更改或將產品添加到現有訂單中。

理想的是在主窗口中有一個選項來打開一個窗體,該窗體顯示客戶代碼下保存的所有訂單,工作編號以及dateStamp。 一旦用戶選擇了任何一個訂單,“ 輸入”窗口應隨特定訂單的輸入一起打開,從而允許用戶添加產品並保存在新的日期戳下。

使用iTextSharp將輸出表單保存為PDF,並進行打印。 但是,這些文件保持不變。

每個Datagrids都臨時與DataTables綁定,但是Customer詳細信息只是存儲在變量中的文本框。 ((輸入值經過一系列計算,並用於在Excel工作表中預制成LOOKUP以返回制造所需的信息以及零件索引))

我也嘗試創建一個數據庫,但是無法正常工作。 大多數客戶和訂單數據庫都依賴於相關列,例如產品代碼,客戶代碼等。但是,我基本上只有信息表。 它很難將多個數據網格綁定到特定客戶。 當所有數據網格幾乎都具有相同的列時,就更難了。 高度,寬度,數量等

如果有人有任何建議或憤怒的回應,那就是我的愚蠢。.我真的很感激。 這是我的第一個C#應用程序。老實說,這是我的第一個實際用戶應用程序。 我需要開始使用VHDL

提前致謝

赫爾曼·韋庫埃爾(Herman Vercuiel)

從應用程序本身退后一步,考慮您正在創建的實際對象是什么。 通過創建諸如Customer,Order等類,您似乎會受益匪淺。您不一定需要數據庫,文本文件也可以正常工作。 通讀下面的CodeProject文章,以獲得有關面向對象設計概念的基本概述,然后考慮重新構造應用程序以使用類可以如何幫助您持久化數據。

提示: 序列化將使持久化和檢索您的類變得更加容易。

只是以為如果有人遇到類似問題,我會回答這個問題。

當涉及到保存數據時,數據庫只是最好的選擇。 當您有多個用戶時。 寫入文本文件將導致權限問題。 我遇到的問題是沒有任何可用作外鍵的列。 如果要將不同的表關聯到一個客戶或訂單,這當然是一個問題。

我解決此問題的方法是將每個列數組合並為一個字符串

這段代碼將讀取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;
        }

這使您可以將datagrid存儲到dataTable中的一個單元格中。 因此,對於每個訂單,您基本上都有一個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,值得學習如何使用任何類型的數據庫

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM