CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

WIN FORM中如何点DataGird中某一个单元格来选种这1行????

楼主cc_net(念念红尘)2005-12-21 17:10:02 在 .NET技术 / C# 提问

我想通过点DataGird中某一个单元格来选中这一行,并且取出这一行中各个单元的数据!  
   
  请问如何实现??? 问题点数:20、回复次数:7Top

1 楼ppdty()回复于 2005-12-21 17:24:44 得分 0

绑定的数据源中添加一列作为主键,在datadrid中点击了之后去找这一行所属的主键,找到后回过来去帮定的数据源里根据主键把整行的值读出来Top

2 楼cc_net(念念红尘)回复于 2005-12-21 17:48:18 得分 0

点击是触发什么事件呢????  
   
  Top

3 楼zhjchinese(学习学习在学习)回复于 2005-12-21 17:59:21 得分 10

我是这样完成的哈:  
  在datagrid的MouseUp中写如下代码  
  string   str_lr   =   "";  
  DataGrid.HitTestInfo   myHitTest;//按下的行列  
  myHitTest   =   dataGrid1.HitTest(e.X,e.Y);//获取鼠标单击的行列号  
  int   i_column   =   3;//列数,根据数据绑定时可得到 if(myHitTest.Row   >=   0)//得到选中行的数据  
  {  
  for   (int   i=0;i<i_column;i++)  
  {  
  if(i   ==   i_column   -   1)  
  {  
  str_lr   +=   dataGrid1[myHitTest.Row,i].ToString().Trim().Replace("@","@");  
  }  
  else  
  {  
  str_lr   +=   dataGrid1[myHitTest.Row,i].ToString().Trim()   +   "@";  
  }  
  }  
  }  
  MessageBox.Show(str_lr);  
  dataGrid1.Select(myHitTest.Row);//选定整行Top

4 楼zhzuo(秋枫)回复于 2005-12-22 21:57:44 得分 0

 
  取出DataGrid当前行对应的DataTable的值。  
  如果DataGrid绑定的是DataView,  
  DataRowView   drv   =   (DataRowView)this.BindingContext[this.ds,this.ds.Tables[0].TableName].Current;  
  //如果绑定的是DataTable  
  //DataRow   dw   =   (DataRow)this.BindingContext[this.dataGrid1.DataSource,this.dataGrid1.Memeber].Current;  
  获取到drv就可以改数据,  
  DataRow   dw   =   drv.Row; // 得到DataRow,  
  DataTable   dt   =   dw.Table;//得到DataTable  
  DataSet   ds   =   dt.DataSet; Top

5 楼xrwang(无涯)回复于 2005-12-23 08:54:12 得分 0

对,就用zhjchinese(学习学习在学习)的HitTestTop

6 楼yuqi508(毛路)回复于 2005-12-23 09:21:25 得分 5

我做过:需要两个事件实现---用CuurentCellChanged事件也可以  
      Private   Sub   grdCaseInfo_MouseDown(ByVal   sender   As   System.Object,   ByVal   e   As   System.Windows.Forms.MouseEventArgs)   Handles   grdCaseInfo.MouseDown  
                  Try  
                          '''处理  
   
                          If   e.Button   =   MouseButtons.Left   Then                                                         '左键点击  
                                  '   Me.gpbCaseInfo.Focus()                                                                 '转移焦点  
                                  Dim   objHitTest   As   System.Windows.Forms.DataGrid.HitTestInfo   'DataGrid的点击信息  
                                  objHitTest   =   Me.grdCaseInfo.HitTest(e.X,   e.Y)   '取得鼠标点击信息(列号,行号)  
                                  M_intRowIndex   =   -1                                                                                             '初始化为-1    
                                  If   objHitTest.Type   <>   DataGrid.HitTestType.None   Then                         '点击不是空白处  
                                          If   objHitTest.Row   <>   -1   Then                                                                 '有选中的行索引  
                                                  M_intRowIndex   =   objHitTest.Row                                                     '存放选中的行索引  
                                          End   If  
                                  ElseIf   objHitTest.Type   =   DataGrid.HitTestType.None   Then                   '点击空白处  
                                          Me.grdCaseInfo.UnSelect(Me.grdCaseInfo.CurrentRowIndex)               '取消选中当前行  
                                  End   If  
                          End   If  
                          '''异常处理  
                  Catch   ex   As   Exception  
                          ProjectException.ShowErrMsg(Me.Name,   "grdCaseInfo_MouseDown",   ex.Message)  
                  End   Try  
          End   Sub  
  ---------------------------------  
          Private   Sub   grdCaseInfo_MouseUp(ByVal   sender   As   System.Object,   ByVal   e   As   System.Windows.Forms.MouseEventArgs)   Handles   grdCaseInfo.MouseUp  
                  Try  
                          '''处理  
                          If   e.Button   =   MouseButtons.Left   Then             '左键UP  
                                  If   M_intRowIndex   >=   0   And   M_intRowIndex   <=   Me.grdCaseInfo.VisibleRowCount   -   1   Then   '索引在grdCaseInfo是有效行索引  
                                          Me.grdCaseInfo.Select(M_intRowIndex)   '设置DataGride选中行  
                                  End   If  
                          End   If  
                          '''异常处理  
                  Catch   ex   As   Exception  
                          ProjectException.ShowErrMsg(Me.Name,   "grdCaseInfo_MouseUp",   ex.Message)  
                  End   Try  
          End   Sub  
  Top

7 楼ysgan(阿甘)回复于 2005-12-23 09:57:53 得分 5

private   void   dataGrid1_MouseUp(object   sender,   System.Windows.Forms.MouseEventArgs   e)  
  {  
  DataGrid.HitTestInfo   myHitTest;//按下的行列  
  myHitTest   =this.dataGrid1.HitTest(e.X,e.Y);//获取鼠标单击的行列号  
   
  this.textBox1.Text=this.dataGrid1[myHitTest.Row,0].ToString().Trim();  
  this.textBox2.Text=this.dataGrid1[myHitTest.Row,1].ToString().Trim();  
  this.textBox3.Text=this.dataGrid1[myHitTest.Row,2].ToString().Trim();  
  this.textBox4.Text=this.dataGrid1[myHitTest.Row,3].ToString().Trim();  
  this.textBox5.Text=this.dataGrid1[myHitTest.Row,4].ToString().Trim();  
   
  dataGrid1.Select(myHitTest.Row);//选定整行  
  }Top

相关问题

  • [馨郁星愿] DataGird合并单元格问题,请各位帮帮忙!~~~
  • 合并单元格
  • 删除单元格
  • MSFlexgrid的单元格修改
  • EXcel单元格属性
  • 单元格着色问题
  • ????????datagrid单元格焦点
  • 如何锁定单元格
  • DataGrid单元格填充Image
  • 怎样合并单元格?

关键词

  • 数据
  • datagrid
  • me
  • grdcaseinfo
  • introwindex
  • myhittest
  • objhittest
  • 选中
  • 点击
  • mouseup

得分解答快速导航

  • 帖主:cc_net
  • zhjchinese
  • yuqi508
  • ysgan

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo