如何从类向Datagridview添加行
本文关键字:Datagridview 添加行 | 更新日期: 2023-09-27 18:27:12
我有一个获胜表单,它有一个数据网格视图和按钮。当我按下那个按钮时,它从Order
类调用viewOrderHistory()
方法。从那里我想添加行到datagridview。我的表单名称orderHistory。这是我的viewOrderHistory
方法。
OrderHistory OH = new OrderHistory();
public void viewOrderHistory(int id){
DataGridView orderHistoryProductDataGrid = OH.dataGridView2;
try
{
int count = 0;
orderHistoryProductDataGrid.Rows.Clear();
orderHistoryProductDataGrid.Refresh();
DatabaseConnection();//Database connection
string ord = "SELECT * FROM Orders_Products WHERE ID='" + id + "'";
SqlCommand ordPro = new SqlCommand(ord, myCon);
SqlDataReader rdr = ordPro.ExecuteReader();
while (rdr.Read())
{
DataGridViewRow row = (DataGridViewRow)orderHistoryProductDataGrid.Rows[count].Clone();
row.Cells[0].Value = rdr["Code"].ToString();
row.Cells[1].Value = mainform.getProduct(rdr["Code"].ToString());
row.Cells[2].Value = rdr["Quantity"].ToString(); ;
orderHistoryProductDataGrid.Rows.Add(row);
count++;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Exception", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}`
已成功从数据库检索数据。但是行并没有添加到我的数据网格视图中。请帮忙。。。
OrderHistory OH = new OrderHistory();
public void viewOrderHistory(int id)
{
DataGridView orderHistoryProductDataGrid = OH.dataGridView2;
try
{
DatabaseConnection();//Database connection
string ord = "SELECT * FROM Orders_Products WHERE ID=@ID";
SqlCommand ordPro = new SqlCommand(ord, myCon);
ordPro.Parameters.AddWithValue("@ID", id);
DataSet resultDst = new DataSet();
using (SqlDataAdapter adapter = new SqlDataAdapter(cmd))
{
adapter.Fill(resultDst, "OrderProducts");
}
orderHistoryProductDataGrid.DataSource = resultDst.Tables[0];
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Exception", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}`
首先,你不应该写像这个ID='" + id + "'"
这样的查询。如果你对sql注入持开放态度,你可以在维基百科上阅读。这也会影响sql server的性能。在查询中始终使用命令参数。
其次,您可以使用SqlDataAdapter
从DataSet
中的数据库中提取数据,然后将其作为DataSource
放入网格!你可以阅读SqlDataAdapter
。
第三,要注意你的格式真的很纯,因此可能没有人回答你!试着将来做得更好。另外,不要在数据库中使用"_"来编写表。相反,Orders_Products
只写OrderProducts
另外,更好的做法是在不同的层中连接到数据库。我在另一个问题中写了一个数据访问层:检查用户名或用户电子邮件是否已经存在!在这个问题中,如果你想检查它,我将详细解释如何做到这一点。这将提高你的知识。