[英]C# WinForm List into Database
下午全部
我的任务是将我们的用户当前填写的纸质表单转换为Windows Form c#应用程序中的电子表单,用户可以在其中以电子方式填写表单,然后单击一个按钮,将数据放入数据库。
我已经完成了五种其他形式的表格,但都没有问题,但是我刚刚想到的一种形式(我认为这是最简单的一种形式)使我很困惑。
这是一个示例,说明纸的外观和填充方式(首先从excel打印):
我的数据库具有下表:
User
UserID
UserName
EquipmentReturnSubmission
UserID (from User table)
ReturnID
ReturnDate
EquipmentReturnDetails
ReturnID (from EquipmentReturnSubmission table)
SerialNo
Description
将数据放入数据库后,上面表格中的每一行在EquipmentReturnDetails表中都会有一行,但是所有行都具有相同的ReturnID,因此可以链接以生成该用户提交的设备列表。
让我感到困扰的是如何在WinForms应用程序中执行此操作。 我看过将GridView中的数据插入数据库中,但是一次只能找到如何执行这一行-我需要使用相同的ReturnID插入所有行,以便可以将其链接。
我以为我可以做下面的事情,但是找不到从哪里开始进行编码的线索,即使这是最好的方法。
我的想法是,用户输入序列号和描述,然后单击添加,这会将详细信息放入列表框/ gridview或某种保存区域,并清除文本框。 然后,每次将详细信息添加到保存区域时,用户就可以继续执行此操作,然后,提交按钮会将其写入数据库。
同样,我不确定如何完成此操作,除非每次单击添加按钮时都有一种创建参数的方法。
如果有人能指出我正确的方向,那就太好了。 我很自学,很高兴能被完全纠正。
提前致谢。
好吧,感谢Zath的评论,我做了更多的研究,并设法在以下方面使它起作用:
表:
User
UserID
UserName
EquipmentReturnSubmission
UserID //(from User table)
ReturnID
ReturnDate
EquipmentReturnDetails
ReturnID //(from EquipmentReturnSubmission table)
SerialNo
Description
然后,我将DataGridView添加到表单中,并添加了SerialNo和Description列。 我的C#代码如下:
private void Submit_Click(object sender, EventArgs e)
{
if (MessageBox.Show("Are you sure these details are correct?", "Are you sure?", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
dataGridView1.AllowUserToAddRows = false; //Disables edit so the insert doesnt try and do an insert for the blank row created when the user clicks to add data.
#region SQL Insert
SqlConnection con = new SqlConnection(Home.ConString);
SqlCommand cmd = new SqlCommand("EquipmentReturnSubmission1", con);
cmd.CommandType = CommandType.StoredProcedure;
#region Parameters
cmd.Parameters.Add("@Name", SqlDbType.VarChar, 200).Value = OfficerName.Text;
cmd.Parameters.Add("@Area", SqlDbType.VarChar, 200).Value = Area.Text;
cmd.Parameters.Add("@SubmissionDate", SqlDbType.Date).Value = SubmissionDate.Value;
cmd.Parameters.Add("@SubmissionID", SqlDbType.Int).Direction = ParameterDirection.Output;
#endregion
try
{
con.Open();
cmd.ExecuteNonQuery();
}
catch (System.Exception ex1)
{
throw new System.Exception("Error submitting equipment return sheet." + ex1.Message);
}
finally
{
SubID = int.Parse(Convert.ToString(cmd.Parameters["@SubmissionID"].Value));
con.Close();
SecondInsert();
}
#endregion
}
}
}
private void SecondInsert()
{
foreach (DataGridViewRow row in dataGridView1.Rows)
{
SqlConnection con = new SqlConnection(Home.ConString);
{
SqlCommand cmd = new SqlCommand("INSERT INTO EquipmentReturnSubmissionDetails (SubmissionID, SerialNumber, Description) VALUES (@SubmissionID, @SerialNumber, @Description)", con);
cmd.CommandType = CommandType.Text;
{
cmd.Parameters.AddWithValue("@SubmissionID", SqlDbType.Int).Value = SubID;
cmd.Parameters.AddWithValue("@SerialNumber", row.Cells["SerialNo"].Value);
cmd.Parameters.AddWithValue("@Description", row.Cells["Description"].Value);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
}
}
MessageBox.Show("Data submitted.");
this.Close();
}
这完全按照我的要求进行,并且很快完成。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.