我有一个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();
};
但是,由于我的文本框是动态生成的,所以我不确定如何保存对数据集所做的所有更改。
所以我的问题是:
如何将动态生成的文本框中的数据保存回数据集?