我的Item_code, Item_desc,Item_qty,Item_rate,Item_total.
有5个标题
Item_desc
现在,该用户只能输入Item qty
& Item_desc
。单元格item_desc
将自动完成字符串用户输入。因此,一旦用户输入Item total
后,我希望应用程序使用相应的详细信息填写其余单元格。然后用户将输入数量,应用程序应计算并在相应的单元格中显示autocomplete
。但我无法从item_desc
列的"%1.17g"
属性进一步发展。请帮忙。提前致谢。在这里,我附上了我的应用程序的屏幕截图。
答案 0 :(得分:0)
假设您正在使用SQL数据库,那应该不那么难:
private void datagridview1_KeyDown()
if (e.KeyCode == Keys.Enter)
{
int rowindex = dataGridView1.CurrentCell.RowIndex; //Here we get the selected row's index of the dataGridView
int columnindex = dataGridView1.CurrentCell.ColumnIndex; ////Here we get the selected column's index of the dataGridView
SqlCommand cmd = new SqlCommand("Select * from tablename WHERE desc=@desc",connection);
cmd.Parameters.Add("@desc",SqlDbType.VarChar).Value = dataGridView1.Rows[rowindex].Cells[columnindex].Value.ToString();
SqlDataReader dr = cmd.ExecuteReader();
While (dr.Read())
{
dataGridView1.Rows[rowindex].Cells[1].Value = dr[1].ToString
///Keep continuing for each column
}
dr.Close();
}
答案 1 :(得分:0)
最后我发现我可以在同一个事件处理函数中执行这两个操作。
//在项目描述条目完成时填写每一行中的项目详细信息 //在数量输入完成时显示每行中的项目总数
<
private void dtgrdvw_items_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex == 1)
{
int rowindex = dtgrdvw_items.CurrentCell.RowIndex;
int columnindex = dtgrdvw_items.CurrentCell.ColumnIndex;
SqlCommand cmd = new SqlCommand("Select * from item WHERE item_desc=@inv_item_desc", con);
cmd.Parameters.Add("@inv_item_desc", SqlDbType.VarChar).Value = dtgrdvw_items.Rows[rowindex].Cells[columnindex].Value.ToString();
if (con.State == ConnectionState.Closed)
{
con.Open();
}
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
dtgrdvw_items.Rows[rowindex].Cells[0].Value = dr[0].ToString();
dtgrdvw_items.Rows[rowindex].Cells[1].Value = dr[1].ToString();
dtgrdvw_items.Rows[rowindex].Cells[3].Value = dr[2].ToString();
}
dr.Close();
}
if (e.ColumnIndex == 2)
{
int cell1 = Convert.ToInt32(dtgrdvw_items.CurrentRow.Cells[2].Value);
Decimal cell2 = Convert.ToDecimal(dtgrdvw_items.CurrentRow.Cells[3].Value);
if (cell1.ToString() != "" && cell2.ToString() != "")
{
dtgrdvw_items.CurrentRow.Cells[4].Value = cell1 * cell2;
}
}
}
>
在CellEndEdit中,我检查了当前列的索引,并在输入项目描述(第2列)后从项目表中检索项目详细信息。然后在我输入数量(第3列)后,它将按速率计算(第4列)并在总列中立即显示总数(第5列)。感谢帮助