我有两个表“项目”和“发票”。我的表单中有一个带有标题的“datagridview” 现在,当用户输入“item desc”单元格值(“使用 item desc 单元格的自动完成属性和根据用户输入进行填充的按键按下事件')。现在用户将输入“数量”和“项目总数”(现在手动输入)。然后按提交按钮。问题来了。它向我显示错误输入字符串不正确。但是当我手动输入所有单元格时(我的意思是不使用 keydown 事件来填充数据),数据将插入到发票表中。
这是我要插入发票表的提交按钮 <
private void btn_submit_Click(object sender, EventArgs e)
{
try
{
foreach (DataGridViewRow row in dtgrdvw_items.Rows)
{
using (SqlCommand cmd = new SqlCommand("insert into invoice values (@inv_no,@inv_date,@inv_cust_name,@inv_remarks,@inv_type,@inv_item_code,@inv_item_desc,@inv_item_rate," +
"@inv_item_qty,@inv_item_total)", con))
{
cmd.Parameters.AddWithValue("@inv_no", Convert.ToInt32(txt_inv_no.Text));
cmd.Parameters.AddWithValue("@inv_date", txt_date.Text);
cmd.Parameters.AddWithValue("@inv_cust_name", txt_cust_name.Text);
cmd.Parameters.AddWithValue("@inv_remarks", txt_remarks.Text);
cmd.Parameters.AddWithValue("@inv_type", cmbx_inv_type.SelectedItem);
cmd.Parameters.AddWithValue("@inv_item_code",Convert.ToInt32(row.Cells[0].Value));
cmd.Parameters.AddWithValue("@inv_item_desc",Convert.ToString(row.Cells[1].Value));
cmd.Parameters.AddWithValue("@inv_item_rate",Convert.ToDecimal(row.Cells[2].Value));
cmd.Parameters.AddWithValue("@inv_item_qty",Convert.ToInt32(row.Cells[3].Value));
decimal total = Convert.ToDecimal(row.Cells[2].Value) * Convert.ToDecimal(row.Cells[3].Value);
cmd.Parameters.AddWithValue("@inv_item_total",total);
if (con.State == ConnectionState.Closed)
{
con.Open();
}
cmd.ExecuteNonQuery();
con.Close();
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
MessageBox.Show("invoice submitted");
}
>
这是我的按键事件
<
private void dtgrdvw_items_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Tab)
{
int rowindex = dtgrdvw_items.CurrentCell.RowIndex;
int columnindex = dtgrdvw_items.CurrentCell.ColumnIndex;
if (columnindex == 1)
{
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();
}
}
}
>
请帮忙。
网格中的单元格 0 代码 1 描述 2 数量 3 比率 4 总计
cmd.Parameters.AddWithValue("@inv_item_code",Convert.ToInt32(row.Cells[0].Value));
cmd.Parameters.AddWithValue("@inv_item_desc",Convert.ToString(row.Cells[1].Value));
cmd.Parameters.AddWithValue("@inv_item_rate",Convert.ToDecimal(row.Cells[2].Value)); //Change
应该:
cmd.Parameters.AddWithValue("@inv_item_rate",Convert.ToDecimal(row.Cells[3].Value));
cmd.Parameters.AddWithValue("@inv_item_qty",Convert.ToInt32(row.Cells[3].Value)); //Change
应该:
cmd.Parameters.AddWithValue("@inv_item_qty",Convert.ToInt32(row.Cells[2].Value)); //Change
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句