将动态生成的文本框及其数据保存到数据集C#

时间:2018-12-13 14:52:06

标签: c# dataset

我有一个datagridview,其中包含对许多其他表的引用。

当用户选择一行并单击一个按钮时,我的程序将从相对表中获取数据并以新形式显示。

我在这里这样做:

  //setup vars
        int n = 0;
        DataTable arraysDt = null;

//Check what table the should be looked up based on datagridview column value
        if (dataGridView1.CurrentRow.Cells[9].Value.ToString() == "ARRAYS")
        {
            n = sIMSDataSet.ARRAYS.Columns.Count;
            arraysDt = sIMSDataSet.ARRAYS;
        }
        if (dataGridView1.CurrentRow.Cells[9].Value.ToString() == "BUFFERBOX")
        {
            n = sIMSDataSet.BUFFERBOX.Columns.Count;
            arraysDt = sIMSDataSet.BUFFERBOX;
        }


//iterate through the columns and display data in new form
        for (int i = 0; i < n; i++) 
        {
            string colname ="";
            string cellValue = "";

            var rownum = (from myRow in arraysDt.AsEnumerable()
                          where myRow.Field<string>("SERIAL") == dataGridView1.CurrentRow.Cells[3].Value.ToString()
                          select myRow.Field<int>("ID")).FirstOrDefault();

            if (arraysDt == sIMSDataSet.BUFFERBOX)
            {
                colname = sIMSDataSet.BUFFERBOX.Columns[i].ColumnName.ToString();
                cellValue = sIMSDataSet.BUFFERBOX.Rows[rownum - 1][colname].ToString();
            }

            if (arraysDt == sIMSDataSet.ARRAYS)
            {
                colname = sIMSDataSet.ARRAYS.Columns[i].ColumnName.ToString();
                cellValue = sIMSDataSet.ARRAYS.Rows[rownum - 1][colname].ToString();
            }

            //Create label
            Label label = new Label();
            label.Text = colname;
            label.AutoSize = true;
            //Position label on screen
            label.Left = 10;
            label.Top = (i + 1) * 30;
            //Create textbox
            TextBox dynamtextBox = new TextBox();
            dynamtextBox.Text = cellValue;
            dynamtextBox.Name = colname;
            dynamtextBox.Size = new Size(300, 24);
            //Position textbox on screen
            dynamtextBox.Left = 150;
            dynamtextBox.Top = (i + 1) * 30;
            //Add controls to form
            form11.Controls.Add(label);
            form11.Controls.Add(dynamtextBox);
        }

如您所见,我根据选择的行动态生成文本框及其数据。

我可以使用以下代码将已知的文本框值保存到数据库:

 saveBtn.Click += (s1, e1) =>
    {
        var updateRow = sIMSDataSet.Tables["Stock"].Select("SM =" + "'" + dataGridView1.CurrentRow.Cells[3].Value.ToString() + "'");

        updateRow[0]["ItemName"] = itemtb.Text.ToUpper();
        updateRow[0]["Location"] = locationTb.Text.ToUpper();
        updateRow[0]["Supplier"] = supplierTb.Text.ToUpper();
        updateRow[0]["ItemCategory"] = catTb.Text.ToUpper();
        updateRow[0]["ProjectNumber"] = projTb.Text.ToUpper();
        updateRow[0]["PONumber"] = poTb.Text.ToUpper();
        updateRow[0]["BookingNumber"] = bnTb.Text.ToUpper();
        updateRow[0]["SupplierNumber"] = snTb.Text.ToUpper();
        updateRow[0]["Status"] = statusTb.Text.ToUpper();
        updateRow[0]["Info"] = infoTb.Text.ToUpper();
        updateRow[0]["Value"] = valueTb.Text.ToUpper();
        stockTableAdapter.Update(sIMSDataSet);
        form11.Close();
    };

但是,由于我的文本框是动态生成的,所以我不确定如何保存对数据集所做的所有更改。

所以我的问题是:

如何将动态生成的文本框中的数据保存回数据集?

0 个答案:

没有答案