c# winform datagridview cellendedit 在datagridview的第一列输入编码,第二,三列自动取值,名称和规格

据库中已经有基础资料
编码 名称 规格
1122 杯子 330
2233 螺丝 317
.... ... ...
... ... ...
制作一张进仓单,在
datagridview的第一列输入编码1122,第二列和第三列会自动取值,
string sql = "select * from base_wl where wlno='" + dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString() +"'";
DataSet dk = new DataSet();
SqlDataAdapter db = new SqlDataAdapter(sql, con);
db.Fill(dk);
dataGridView1.DataSource = dk.Tables[0];
这样只能在第一行里输入后datagridview显示,当我在第二行继续输入编码的时候,还是会跳到datagridview第一行显示我第二次输入的编码和第二列和第三列的信息
不知道怎么存储多条的信息在datagridview显示

完整的代码比较麻烦,我这里提供一个思路

1、使用CellEndEdit事件。在事件中,e.ColumnIndex 和e.RowIndex 指示了你刚刚编辑的是哪一个单元格;
2、 大体代码如下:
if(e.ColumnIndex != 0)
return;
string sql = "select * from base_wl where wlno='" + dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString() +"'";
DataSet dk = new DataSet();
SqlDataAdapter db = new SqlDataAdapter(sql, con);
db.Fill(dk);
dataGridView1.Rows[e.RowIndex].Cells[e.1] = db.Tables[0].Rows[0]["你要取得的字段"].ToString(); //给第二列赋值
dataGridView1.Rows[e.RowIndex].Cells[e.1] = db.Tables[0].Rows[0]["你要取得的字段"].ToString(); //给第三列赋值追问

if(e.ColumnIndex != 0)
这句是一个循环?
datagridview不断的循环绑定?
datagridview 绑定哪个数据源,给个思路,怎么弄?

我输入第一行记录后,datagridview就显示我刚才输入的那条记录
当我到第二行记录输入的时候,datagridview就只显示我第二次输入的记录

追答

if不是循环,而是在cellendedit事件里面首先判断一下“刚刚完成编辑的如果不是第一列,那么跳出”

你用我给你的代码放到cellendedit事件里面看看效果不就知道了。基本上是全得了。当然,“]["你要取得的字段"].”得改成你的字段名。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-10-03
在工具箱中点击右键,选择添加,然后把webbrowser控件添加进来,再把webbrowser控件拖到你程序中就有axwebbrowser控件了
第2个回答  2011-09-20
这个
不要重新绑定数据源
也无需绑定数据源
根据每行编码 查询当前行数据,进行当前行数据的绑定。
dataGridView1.DataSource = dk.Tables[0];将整个datagridview刷新了,能不跳到第一行吗?
第3个回答  2011-09-20
你加的事件不对吧追问

可以给个例子吗?
重要的代码,也可以了

相似回答