根据数据网格值C#从数据库获取数据到数据网格视图

Get data from DB to datagridview based on datagrid values C#

我有一个问题,我似乎没有在这个问题上做对...我一直在尝试做的是在 datagridview 单元格上输入一个值 (id),按回车键,然后填充具有来自数据库 (SQL) 数据的相邻单元格,与我在第一个单元格中输入的 ID 相匹配。问题是:

  1. 如何获取数据网格视图上的按键事件?

  2. 如何从特定单元格中获取值,让我们输入一个整数?

  3. 如何从数据表中添加行,而不删除 datagridview 中的第一行?有更新方法吗?

抱歉,如果这些是基本问题,但我似乎找不到答案。 谢谢!

编辑:这是我一直在尝试的代码...我用它完成的是当我按下回车键时,除了我已经创建的列之外,我在数据网格上得到了一组新的空列

private void dataGridView_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.KeyData == Keys.Enter)
        {
            foreach (DataGridViewRow row in dataGridView1.Rows)
            {
                DataGridViewCell cell = row.Cells[0];
                if (cell.Value == null || cell.Value.Equals("") || cell.ColumnIndex == 0)
                {
                    dataGridView1.CurrentRow.cell[0].FormattedValue as int;
                    int idArticle = Convert.ToInt32(row.Cells[0].Value);
                    //int idArticle = Convert.ToInt32(dataGridView1.SelectedCells[0].Value);
                    dataGridView1.AutoGenerateColumns = true;
                    string constring = @"Data Source=DAN;Initial Catalog=administration;Integrated Security=True ";
                    using (SqlConnection con = new SqlConnection(constring))
                    {
                        using (SqlCommand cmd = new SqlCommand("SELECT id_article, article, quantity, precio FROM articlesSG WHERE id_article=@id_article", con))
                        {
                            cmd.Parameters.AddWithValue("id_article", idArticle);
                            cmd.CommandType = CommandType.Text;
                            using (SqlDataAdapter sda = new SqlDataAdapter(cmd))
                            {
                                using (DataTable dt = new DataTable())
                                {
                                    sda.Fill(dt);
                                    dataGridView1.DataSource = dt;
                                }
                            }
                        }
                    }
                }
            }
        }
    }

要捕获密钥,试试这个:

private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
  var tb =(DataGridViewTextBoxEditingControl)e.Control;
  tb.KeyPress += new KeyPressEventHandler(dataGridViewTextBox_KeyPress);

  e.Control.KeyPress += new KeyPressEventHandler(dataGridViewTextBox_KeyPress);
}

private void dataGridViewTextBox_KeyPress(object sender, KeyPressEventArgs e)
{
}

获取当前值:

dataGridView1.CurrentRow.Cell[indexorname].FormattedValue as int

要添加行,请使用 DataTable.Merge: