选中Form1中dgv1的一行数据中的序列号sn,通过sn 把在datatable dt中匹配的数据显示到form2中的dgv2,并且能重复查询
时间: 2024-03-12 12:49:36 浏览: 92
可以按照以下步骤实现:
1. 在 `Form1` 中,双击 `dgv1` 控件,编写以下代码:
```csharp
private void dgv1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{
// 获取选中的行
DataGridViewRow selectedRow = dgv1.Rows[e.RowIndex];
// 获取选中行的序列号
string sn = selectedRow.Cells["SN"].Value.ToString();
// 在 Form2 中显示匹配的数据
Form2 form2 = new Form2(sn);
form2.Show();
}
```
2. 在 `Form2` 中添加一个构造函数,用于接收从 `Form1` 传递过来的 `sn` 值,并根据该值从 `dt` 中筛选出匹配的数据,并显示在 `dgv2` 中。代码如下:
```csharp
public partial class Form2 : Form
{
private DataTable dt;
public Form2(string sn)
{
InitializeComponent();
// 从 dt 中筛选出匹配的数据
DataRow[] rows = dt.Select("SN = '" + sn + "'");
// 将匹配的数据显示在 dgv2 中
dgv2.DataSource = rows.CopyToDataTable();
}
}
```
需要注意的是,`dt` 数据表需要在 `Form2` 加载时进行初始化。可以在 `Form2` 的 `Load` 事件中添加以下代码:
```csharp
private void Form2_Load(object sender, EventArgs e)
{
// 初始化 dt 数据表
dt = new DataTable();
// 为 dt 添加列
dt.Columns.Add("SN", typeof(string));
dt.Columns.Add("Name", typeof(string));
// 添加数据
dt.Rows.Add("SN1", "Name1");
dt.Rows.Add("SN2", "Name2");
dt.Rows.Add("SN3", "Name3");
// 显示数据
dgv2.DataSource = dt;
}
```
这里只是一个简单的示例,实际情况需要根据具体的数据表结构和查询需求进行修改。
阅读全文