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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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事件里面看看效果不就知道了。基本上是全得了。当然,“]["你要取得的字段"].”得改成你的字段名。

参考技术A 在工具箱中点击右键,选择添加,然后把webbrowser控件添加进来,再把webbrowser控件拖到你程序中就有axwebbrowser控件了 参考技术B 这个
不要重新绑定数据源
也无需绑定数据源
根据每行编码 查询当前行数据,进行当前行数据的绑定。
dataGridView1.DataSource = dk.Tables[0];将整个datagridview刷新了,能不跳到第一行吗?
参考技术C 你加的事件不对吧追问

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

c# WinForm DatagridView的问题

我的DatagridView中第一列是"复选框"类型的,并且该列设置了FalseValue=0;TrueValue=1;问题是,我通过DatagridView.Rows[i].cell[0].value=“0”的方法想把所有行都变成没有选中状态,谁知的当前选中那个格就是不会变,请高手帮忙,最好不要用DatagridView.Rows[i].cell[0].value=true这种方法,因为这样会给我的后续工作带来很多不便,谢谢
大家回答的都不对呀,我把问题补充一下。
第一、我的DatagridView中第一列是"复选框"类型的,并且该列设置了FalseValue=0;TrueValue=1;
我想通过DatagridView.Rows[i].cell[0].value=“0”的方法把所有列都变成不选中,我选中的那个单元格却不变,请问怎么解决??????

参考技术A 你的复选框是什么类型?RadioButton还是CheckBox的?如果是CheckBox的话,就重新写个循环,循环这个DatagridView的第一列,判断每一列是否有CheckBox,有的话就将其check属性变成False!RadioButton类似!建议用脚本去写,不然刷新很麻烦的!希望可以帮助你!! 参考技术B 有个OnClick事件,把绑定数据的代码写到DataGridView的onclick事件里就可以了。 参考技术C 你把DatagridView的数据放入一个datatable中,然后循环datatable就可以了。

DataTable dt = new DataTable();
dt = (DataTable)dataGridView1.DataSource;
for (int i = 0; i < dt.Rows.Count; i++)


参考技术D 设置完所有的选中状态之后,加一句:
DatagridView.EndEdit();本回答被提问者采纳
第5个回答  2011-08-19 11

以上是关于c# winform datagridview cellendedit 在datagridview的第一列输入编码,第二,三列自动取值,名称和规格的主要内容,如果未能解决你的问题,请参考以下文章

通过 TextBox(C#、WinForms)过滤空 DataGridView

C# WinForm下DataGridView单元按钮列

如何在 C# WinForms 中使用 LINQ 从 DataGridView 中选择多个字段

C# Winforms DataGridView 选定单元格正在清除单元格值

c# WinForm DatagridView的问题

c# winform DataGridView单击选中一整行,只能单选,不能选择多行,只能选择一行