根据刚刚在单元格中输入的值,从数据库中填充C#datagridview中当前行的数据

时间:2018-04-15 15:17:25

标签: c# datagridview

我的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"属性进一步发展。请帮忙。提前致谢。在这里,我附上了我的应用程序的屏幕截图。

screenshot

2 个答案:

答案 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列)。感谢帮助