gpt4 book ai didi

c# - 单击数据网格行并在文本框中显示其内容

转载 作者:搜寻专家 更新时间:2023-10-30 20:18:54 25 4
gpt4 key购买 nike

我正在尝试用数据网格的内容填充文本框。

我正在使用名为 XYZCompany.accbd 的数据源。我用数据库的内容填充 dgv,在本例中包含供应商 ID(自动编号字段)、供应商名称、供应商地址、电话号码和契约(Contract)名称。

首先,我用这些字段填充 dgv。然后我正在努力的下一步是当我点击 dgv 中的一行时,它应该在文本框中显示该行的数据。问题是当我点击 dgv 行时,文本框中没有显示任何内容,而且我没有收到任何错误消息。

我将我的连接作为参数传递给新表单。但无论如何我都会指定它。这是我通过的声明:

    OleDbConnection dbConn;
OleDbCommand dbCmd;
DataSet ds = new DataSet();
OleDbDataAdapter dbAdapter;
private void ViewAllSuppliers_Load(object sender, EventArgs e)
{
dbConn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=XYZCompany.accdb");

dbCmd = new OleDbCommand("SELECT * FROM Supplier ORDER BY [Supplier ID]", dbConn);


dbAdapter = new OleDbDataAdapter(dbCmd);
dbAdapter.Fill(ds, "Suppliers");

}

private void btnViewSuppliers_Click(object sender, EventArgs e)
{
dgvSuppliers.DataSource = ds.Tables["Suppliers"];
}

这是我传递的参数的代码。

这是我试图用来填充文本框的表单中的代码:

public partial class ChangeSupplier : Form
{
OleDbConnection dbConn;
OleDbCommand dbCmd;
DataSet ds;
OleDbDataAdapter dbAdapter;
OleDbDataReader dbReader;

public ChangeSupplier(OleDbConnection dbConn, OleDbCommand dbCmd, DataSet ds, OleDbDataAdapter dbAdapter)
{
InitializeComponent();
this.dbConn = dbConn;
this.dbCmd = dbCmd;
this.ds = ds;
this.dbAdapter = dbAdapter;
}

private void ChangeSupplier_Load(object sender, EventArgs e)
{
dgvSuppliers.DataSource = ds.Tables["Suppliers"];
}

private void dgvSuppliers_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
if (dgvSuppliers.SelectedRows.Count > 0)
{

dbConn.Open();

dbCmd = new OleDbCommand("SELECT * FROM Supplier WHERE [Supplier ID] = '" + dgvSuppliers.SelectedRows[0].Cells[0].Value + "'", dbConn);

dbReader = dbCmd.ExecuteReader();

while (dbReader.Read())
{

txtName.Text = dbReader["[Supplier Name]"].ToString();
txtTelNo.Text = dbReader["[Telephone No]"].ToString();
txtAddress.Text = dbReader["[Supplier Address]"].ToString();
txtContactName.Text = dbReader["[Contact Name]"].ToString();

}
}
}
}

请随时提出任何建议...提前致谢

最佳答案

下面是上述问题的解决方案:

    private void dgvSuppliers_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex >= 0)
{

DataGridViewRow row = this.dgvSuppliers.Rows[e.RowIndex];

txtID.Text = row.Cells["Supplier ID"].Value.ToString();
txtName.Text = row.Cells["Supplier Name"].Value.ToString();
txtTelNo.Text = row.Cells["Telephone No"].Value.ToString();
txtAddress.Text = row.Cells["Supplier Address"].Value.ToString();
txtContactName.Text = row.Cells["Contact Name"].Value.ToString();

}

}

我使用行索引来查找用户点击的单元格。

关于c# - 单击数据网格行并在文本框中显示其内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17002479/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com