Foxtable(狐表)用户栏目专家坐堂 → 怎么获取Table控件中的当前选择数据行?


  共有2806人关注过本帖树形打印复制链接

主题:怎么获取Table控件中的当前选择数据行?

帅哥哟,离线,有人找我吗?
zcf2144
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:80 积分:916 威望:0 精华:0 注册:2018/4/26 17:01:00
怎么获取Table控件中的当前选择数据行?  发帖心情 Post By:2019/1/6 12:37:00 [只看该作者]

请教下各位老师,
现在想用MouseDown从Table控件中拖动出一条自定义结构变量DragData作为DoDragDrop的data ,但是发现没办法从Table控件中获取当前选择的数据行.

结构变量定义如下:
Public Structure DragData
    Public dtRow As DataRow '对应DataRow
    Public MainKey As String '主键列名
End Structure

MouseDown事件将被添加到Table控件的Winform.Control中. 
如何从这个Winform.Control获取当前选择的数据行?


还是说我思路错了?应该将MouseDown事件代码添加到其他对象?

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/1/6 20:46:00 [只看该作者]

 

应该无法实现你这种操作的。在table里面拖动鼠标,是选定行的操作。无法实现拖拽的。


 回到顶部
帅哥哟,离线,有人找我吗?
zcf2144
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:80 积分:916 威望:0 精华:0 注册:2018/4/26 17:01:00
  发帖心情 Post By:2019/1/8 16:40:00 [只看该作者]

甜老师你好,
在Table控件中拖动已经实现,现在问题是不知道如何给table控件动态添加MouseDown事件并获取选定行的Datarow,请问有公开的属性可以操作吗?

代码如下:
Public Sub Table_MouseDown(ByVal Sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) '定义Table MouseDown事件获取指定数据
If Typeof Sender Is System.Windows.Forms.Control ’由于Winform.Control跟Winform.Table没有MouseDown事件。Sender只能是System.Windows.Forms.Control类型. 
    TempDragData.dtRow = ’获取事件触发时的选定行
    TempDragData.MainKey = ‘获取事件发生时的选定列名
End if
End Sub

我也想过用Click事件做这个功能,但是试了一下发现必须要点击完成一次之后才能获取到数据。所以只能在MouseDown时便给TempDragData赋值
TempDragData定义如下:
Public Structure DragData
    Public dtRow As DataRow  '对应DataRow
    Public MainKey As String '主键列名
End Structure
Public TempDragData As DragData



 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/1/8 16:54:00 [只看该作者]

以下是引用zcf2144在2019/1/8 16:40:00的发言:
甜老师你好,
在Table控件中拖动已经实现


 

请上传实现了拖动的例子。

 

绑定事件,参考 http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=108715&skin=0

 


 回到顶部
帅哥哟,离线,有人找我吗?
zcf2144
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:80 积分:916 威望:0 精华:0 注册:2018/4/26 17:01:00
  发帖心情 Post By:2019/1/8 17:04:00 [只看该作者]

论坛添加附件这个按钮好像没用了,我上传到我的服务器了,麻烦老师通过这个链接下载http://oa.mactorvalve.com:8080/project/example.rar

 回到顶部
帅哥哟,离线,有人找我吗?
zcf2144
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:80 积分:916 威望:0 精华:0 注册:2018/4/26 17:01:00
  发帖心情 Post By:2019/1/8 17:19:00 [只看该作者]

看了老师您的例子,通过给C1FlexGrid添加事件实现。不过我对C1FlexGrid不太熟悉,请问如何获取其对应Datatable以及触发事件位置的DataRow?
或者在哪里可以找到这个控件的属性方法列表

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/1/8 17:27:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:example.foxdb


 回到顶部
帅哥哟,离线,有人找我吗?
zcf2144
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:80 积分:916 威望:0 精华:0 注册:2018/4/26 17:01:00
  发帖心情 Post By:2019/1/9 13:00:00 [只看该作者]

老师好,再次麻烦你,
看了你的例子,发现最终返回的数据还是C1.Win.C1FlexGrid.Row类型。 请问是否有方法从这个控件获取其数据源?即其DataTable

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/1/9 15:28:00 [只看该作者]

1、给grid设置name属性,如

 

Tables("表A").grid.name = "表A"

 

2、这样,可以这样获取到对应的表,如

 

Dim name = sender.name

msgbox(name)

Dim t = Tables(name)

Dim dt = t.datatable


 回到顶部