C#dataGridView不显示我希望它显示的信息
本文关键字:显示 信息 我希望 C#dataGridView | 更新日期: 2023-09-27 18:23:48
我有两个dataGridView表。一个是供应商,第二个是产品。我希望他们这样工作:当我点击供应商数据网格视图中的行时,在产品数据网格视图中将只显示所选供应商的产品。这是我为此目的编写的函数:
static public void SuppliersProducts(DataGridView _productslist)
{
try
{
connection.Open();
SqlCommand commandShow = new SqlCommand("SELECT a.Name FROM Products a INNER JOIN SuppliersProducts b ON a.Id = b.ProductId WHERE b.SupplierId = @SupplierId", connection);
DataGridViewRow dr1 = _productslist.SelectedRows[0];
commandShow.Parameters.AddWithValue("@SupplierId", dr1.Cells[0].Value);
commandShow.ExecuteNonQuery();
}
catch (SqlException exception)
{
MessageBox.Show(exception.ToString());
}
finally
{
connection.Close();
}
}
我在dataGridView1_CellMouseClick:中使用它
private void dataGridView1_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
SuppliersProducts(ProductsList);
}
其中ProductsList是我的产品表的dataGridView。问题是,它没有抛出任何错误,但当我在第一个dataGridView表中点击某个供应商时,第二个表没有发生任何错误。我做错了什么?
您可以这样做:
将CellMouseClick
事件更改为CellClick
,因为当任何鼠标按钮单击单元格时,CellMouseClick
都会激发
sql server的数据应该存储在的某个地方
和ExecuteNonQuery()用于插入、删除、更新和不返回数据的命令
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
SuppliersProducts(ProductsList,e.RowIndex);
}
static public void SuppliersProducts(DataGridView _productslist,int index)
{
try
{
connection.Open();
string commandShow=String.Format("SELECT a.Name FROM Products a INNER JOIN SuppliersProducts b ON a.Id = b.ProductId WHERE b.SupplierId = {0}",_productslist.Rows[index].Cells[0].Value));
//Stroing sql server data
var dt = new DataTable();
using (var da = new SqlDataAdapter(commandShow, connection))
da.Fill(dt);
foreach(DataRow row in dt.Rows)
{
dataGridView2.Rows.Add(row[0],...);
}
}
catch (SqlException exception)
{
MessageBox.Show(exception.ToString());
}
finally
{
connection.Close();
}
}