vs写选中dgv某个单元格,根据这个单元格的内容去数据库里获取数据并在窗体各个文本框内显示内容
时间: 2023-03-29 22:03:10 浏览: 79
您好,可以使用以下代码实现您的需求:
```
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex >= && e.ColumnIndex >= )
{
string cellValue = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString();
string query = "SELECT * FROM YourTable WHERE YourColumn = '" + cellValue + "'";
// 使用您的数据库连接对象执行查询并获取结果
// 将查询结果显示在窗体各个文本框内
}
}
```
希望能帮到您!
相关问题
C# 在dgv1中选择一条数据右击 获取Sn 通过Sn在五个数据库中分别找到相关数据 并组合显示到dgv2
好的,我理解了你的问题。你需要使用 C# 编写程序,实现在 dgv1 中选择一条数据右击获取 Sn,然后在五个数据库中分别查找与该 Sn 相关的数据,并将这些数据组合显示到 dgv2 中。下面是一个大致的实现思路:
1. 在 dgv1 中选中一条数据后,右击菜单中添加一个“获取 Sn”的选项,点击后获取该行中的 Sn 值。
2. 针对五个数据库,分别连接数据库,并构造查询语句,查询与 Sn 相关的数据。
3. 将五个数据库查询出来的数据按照一定的规则进行组合,生成一个新的数据集合。
4. 将生成的数据集合绑定到 dgv2 上显示出来。
下面是一个简单的示例代码,供你参考:
```csharp
// dgv1 行选中事件
private void dgv1_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
// 获取 Sn 值
string sn = dgv1.Rows[e.RowIndex].Cells["Sn"].Value.ToString();
// 在五个数据库中查找相关数据
List<DataRow> dataList = new List<DataRow>();
for (int i = 1; i <= 5; i++)
{
using (SqlConnection conn = new SqlConnection($"Data Source=Server{i};Initial Catalog=Database{i};Integrated Security=True"))
{
conn.Open();
string sql = $"SELECT * FROM Table{i} WHERE Sn='{sn}'";
SqlDataAdapter adapter = new SqlDataAdapter(sql, conn);
DataTable dt = new DataTable();
adapter.Fill(dt);
foreach (DataRow row in dt.Rows)
{
dataList.Add(row);
}
}
}
// 组合数据
DataTable resultDt = new DataTable();
resultDt.Columns.Add("Sn");
resultDt.Columns.Add("Data1");
resultDt.Columns.Add("Data2");
foreach (DataRow row in dataList)
{
DataRow newRow = resultDt.NewRow();
newRow["Sn"] = row["Sn"];
newRow["Data1"] = row["Data1"];
newRow["Data2"] = row["Data2"];
resultDt.Rows.Add(newRow);
}
// 将数据显示到 dgv2 中
dgv2.DataSource = resultDt;
}
}
```
需要注意的是,这只是一个示例代码,实际应用中还要根据具体情况进行一些优化。
C# dgv右击数据跳出菜单“测试过程”点击测试过程跳转新窗体progressform并在新窗体中显示数据
好的,我可以给你提供C#代码实现右击DataGridView中的数据项并在弹出的菜单中点击“测试过程”后跳转到新窗体ProgressForm并显示数据的方法。以下是示例代码:
1. 在DataGridView上添加右键菜单:
```csharp
private void dataGridView1_MouseClick(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
ContextMenuStrip menu = new ContextMenuStrip();
menu.Items.Add("测试过程", null, TestProcess_Click);
dataGridView1.ContextMenuStrip = menu;
}
}
private void TestProcess_Click(object sender, EventArgs e)
{
// 获取选中的行数据
DataGridViewRow selectedRow = dataGridView1.SelectedRows[0];
string data = selectedRow.Cells[0].Value.ToString();
// 打开新窗体并传递数据
ProgressForm progressForm = new ProgressForm(data);
progressForm.Show();
}
```
2. 在ProgressForm中添加构造函数,接收并显示传递的数据:
```csharp
public partial class ProgressForm : Form
{
public ProgressForm(string data)
{
InitializeComponent();
label1.Text = data;
}
}
```
这段代码将在DataGridView上右键单击后弹出一个菜单,其中包含一个“测试过程”选项。当用户单击该选项时,将获取选中的行数据,然后打开一个新的ProgressForm窗体,并将选中的数据传递给它。在ProgressForm中,数据将被显示在一个标签控件中。你可以根据需要自定义控件的布局和样式。