如何从类向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);
}
}`

已成功从数据库检索数据。但是行并没有添加到我的数据网格视图中。请帮忙。。。

如何从类向Datagridview添加行

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的性能。在查询中始终使用命令参数。

其次,您可以使用SqlDataAdapterDataSet中的数据库中提取数据,然后将其作为DataSource放入网格!你可以阅读SqlDataAdapter

第三,要注意你的格式真的很纯,因此可能没有人回答你!试着将来做得更好。另外,不要在数据库中使用"_"来编写表。相反,Orders_Products只写OrderProducts

另外,更好的做法是在不同的层中连接到数据库。我在另一个问题中写了一个数据访问层:检查用户名或用户电子邮件是否已经存在!在这个问题中,如果你想检查它,我将详细解释如何做到这一点。这将提高你的知识