根据数据网格值C#从数据库获取数据到数据网格视图
Get data from DB to datagridview based on datagrid values C#
我有一个问题,我似乎没有在这个问题上做对...我一直在尝试做的是在 datagridview 单元格上输入一个值 (id),按回车键,然后填充具有来自数据库 (SQL) 数据的相邻单元格,与我在第一个单元格中输入的 ID 相匹配。问题是:
如何获取数据网格视图上的按键事件?
如何从特定单元格中获取值,让我们输入一个整数?
- 如何从数据表中添加行,而不删除 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:
我有一个问题,我似乎没有在这个问题上做对...我一直在尝试做的是在 datagridview 单元格上输入一个值 (id),按回车键,然后填充具有来自数据库 (SQL) 数据的相邻单元格,与我在第一个单元格中输入的 ID 相匹配。问题是:
如何获取数据网格视图上的按键事件?
如何从特定单元格中获取值,让我们输入一个整数?
- 如何从数据表中添加行,而不删除 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: