以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  怎么获取Table控件中的当前选择数据行?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=129788)

--  作者:zcf2144
--  发布时间:2019/1/6 12:37:00
--  怎么获取Table控件中的当前选择数据行?
请教下各位老师,
现在想用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事件代码添加到其他对象?

--  作者:有点甜
--  发布时间:2019/1/6 20:46:00
--  

 

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


--  作者:zcf2144
--  发布时间: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



--  作者:有点甜
--  发布时间: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
--  发布时间:2019/1/8 17:04:00
--  
论坛添加附件这个按钮好像没用了,我上传到我的服务器了,麻烦老师通过这个链接下载http://oa.mactorvalve.com:8080/project/example.rar
--  作者:zcf2144
--  发布时间:2019/1/8 17:19:00
--  
看了老师您的例子,通过给C1FlexGrid添加事件实现。不过我对C1FlexGrid不太熟悉,请问如何获取其对应Datatable以及触发事件位置的DataRow?
或者在哪里可以找到这个控件的属性方法列表

--  作者:有点甜
--  发布时间:2019/1/8 17:27:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:example.foxdb


--  作者:zcf2144
--  发布时间:2019/1/9 13:00:00
--  
老师好,再次麻烦你,
看了你的例子,发现最终返回的数据还是C1.Win.C1FlexGrid.Row类型。 请问是否有方法从这个控件获取其数据源?即其DataTable

--  作者:有点甜
--  发布时间: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