您的位置:程序门 -> .net技术 -> c#



关于datagridview的使用问题


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


关于datagridview的使用问题[已结贴,结贴人:weiwy]
发表于:2007-01-21 20:34:06 楼主
在winform中,使用datagridview输入,格式大概如下:
产品编码       产品名称     产品单价   售出数量    


输入产品编码后,从库中查询出产品名称及产品单价,同时把光标定位到售出数量这一列。
我的问题是,我应该在什么事件里面写代码,如何把光标定位到售出数量这一列?
发表于:2007-01-21 20:42:461楼 得分:10
你不是做了查询吗?查询完就定位啊
发表于:2007-01-21 20:46:362楼 得分:0
查询的代码我会写,定位的代码不知道怎么写,另外查询的代码放到哪个事件中合适?解决问题立即揭帖
发表于:2007-01-21 20:54:383楼 得分:0
如在[0,0]输入后,在[0,1],[0,2]处显示相应的数据,并把光标定位到[0,3]
发表于:2007-01-21 21:00:194楼 得分:20
查询后
this.datagridview1[4,   0].selected   =   true;
发表于:2007-01-21 21:47:285楼 得分:20
private   void   datagridview1_cellvaluechanged(object   sender,   datagridviewcelleventargs   e)
                {
                        string   aa= " ";
                        if(e.rowindex!=-1)
                          if   (e.columnindex   ==0)//e.columnindex==0是第一列
                          {
                            aa=this.datagridview1.rows[this.datagridview1.currentrow.index].cells[e.columnindex].value.tostring();
                            messagebox.show(aa);
                          }
                     
                }
发表于:2007-01-21 21:50:346楼 得分:20
for   example:

private   void   datagridview1_cellendedit(object   sender,   datagridviewcelleventargs   e)
                {
                        if   (e.columnindex   ==   0)
                        {
                                //查询出值
                                sqlconnection   con   =   new   sqlconnection( "server=.;database=student;uid=sa;pwd=0421 ");
                                sqlcommand   cmd   =   new   sqlcommand( "select   sname,sage   from   studentdetails   where   sno=@sno ",   con);
                                cmd.parameters   .addwithvalue   ( "@sno ",this.datagridview1   .rows   [e.rowindex   ].cells   [e.columnindex   ].value   .tostring   ());
                                con   .open   ();
                                sqldatareader   sdr=cmd   .EXECutereader   ();
                                if   (sdr.read())
                                {
                                        this.datagridview1.rows[e.rowindex].cells[1].value   =   sdr[ "sname "].tostring();
                                        this.datagridview1.rows[e.rowindex].cells[2].value   =   sdr[ "sage "].tostring();
                                        this.datagridview1.rows[e.rowindex].cells[3].selected   =   true;
                                }
                                sdr.close();
                                con.close();
                        }
                }
发表于:2007-01-21 21:54:387楼 得分:0
在输入完后,按一下tab键即可...
发表于:2007-01-21 21:55:528楼 得分:0
学习+接分
发表于:2007-01-22 13:51:139楼 得分:0
liujia_0421(snowlover)
谢谢你回答我的问题。请问你的代码试过没有,我在我自己这里试的好像不行,按tab键到本行的下一列,如果按回车到本列的下一行。
发表于:2007-01-22 13:58:3610楼 得分:0
to:请问你的代码试过没有,我在我自己这里试的好像不行,按tab键到本行的下一列,如果按回车到本列的下一行。

后来试了下,确实不能实现,按tab键时能到本行的下一列,但是到不了最后一列..

原因如下:

按tab键后,先会触发cellendedit事件,虽然用了这句代码this.datagridview1.rows[e.rowindex].cells[3].selected   =   true;设置了焦点到最后一列..

但是按下tab键后还会另一个事件,即聚焦下一个..所以也没能实现..
发表于:2007-01-22 13:59:0511楼 得分:20
用datagridview.currentcell   =   datagridview[row][col]定位当行单元格,然后用
datagridview.beginedit(true)就可以编辑了
发表于:2007-01-22 14:02:0012楼 得分:10
也试过回车,也是不行的,回车会聚焦下一行...

这些都是默认好的,也改不了..

所以还不怎么好实现..
发表于:2007-01-22 14:03:3213楼 得分:0
hbxtlhx(平民百姓)
你那样试试,我也那样写过,但是不知道放到那个事件里面最合适.
发表于:2007-01-22 14:04:1714楼 得分:0
所以效果和this.datagridview1.rows[e.rowindex].cells[3].selected   =   true;应该是一样的.
发表于:2007-01-22 15:26:0815楼 得分:0
自己用一种比较笨的方法解决了,期待高人有更好的方法。


快速检索

最新资讯
热门点击