Foxtable(狐表)用户栏目专家坐堂 → Current函数示例是否有BUG?


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

主题:Current函数示例是否有BUG?

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


加好友 发短信 菜鸟中的老鸟
等级:七尾狐 帖子:1486 积分:10064 威望:0 精华:9 注册:2008/11/14 8:54:00
Current函数示例是否有BUG?  发帖心情 Post By:2009/1/14 16:26:00 [只看该作者]

如图所示,依照示例做了个模式窗口,选择行时执行下列代码(已经去掉标记红色那段),如果直接点击X关闭窗口则提示出错,而点击按钮(内有e.form.Close()代码)关闭窗口则不会报错.WHY?

另问:动态DataList引用非主表非关联表数据能否实现类似功能?感觉上似乎不行.图片点击可在新窗口打开查看


Current

DataRow类型,返回DataList所选定的行。

示例

DataList并没有提供编辑功能,但是我们可以间接地为DataList加上编辑功能。
假定订单表是一个内部表,该表已经有一个设计好的数据录入窗口,窗口的名称为“窗口1”,为了能够在其他表中使用这个窗口,我们将该窗口的类型设为模式型(也可以是独立型)。
客户表中也有一个窗口,该窗口有一个DataList控件和一个按钮,DataList控件已经绑定到订单表,我们希望单击这个按钮,能够编辑在DataList中选定的订单。
为此,可将该按钮的Click事件代码设为:

Dim dst As WinForm.DataList = e.Form.Controls("DataList1")
Dim
dr as DataRow = dst.Current '获得选定行
Dim
Index As Integer = Tables("订单").FindRow(dr) '获得选定行在Tables("订单")中的位置
If
Index >=0 Then '如果选定行在Tables("订单")中存在
    Tables("订单").Position = Index '定位到选定行
    Forms("窗口1").Open()
'打开编辑窗口
End
If


图片点击可在新窗口打开查看此主题相关图片如下:001.jpg
图片点击可在新窗口打开查看
[此贴子已经被作者于2009-1-14 16:35:38编辑过]

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/1/14 17:07:00 [只看该作者]

经过测试,没有发现问题。

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


加好友 发短信 F6
等级:狐精 帖子:3036 积分:19223 威望:0 精华:2 注册:2008/9/1 7:50:00
  发帖心情 Post By:2009/1/14 17:12:00 [只看该作者]

如果还有问题的话,Dim dr as DataRow = dst.Current '获得选定行,按以下修改

Dim dr as DataRow = dst.Current.datarow'获得选定行

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


加好友 发短信 菜鸟中的老鸟
等级:七尾狐 帖子:1486 积分:10064 威望:0 精华:9 注册:2008/11/14 8:54:00
  发帖心情 Post By:2009/1/14 17:13:00 [只看该作者]

以下是引用狐狸爸爸在2009-1-14 17:07:00的发言:
经过测试,没有发现问题。

你有把代码放在DataList的CurrentChanged里吗?


另问:动态DataList引用非主表非关联表数据能否实现类似功能?

[此贴子已经被作者于2009-1-14 17:13:44编辑过]

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/1/14 17:34:00 [只看该作者]

以下是引用菜鸟foxtable在2009-1-14 17:13:00的发言:

你有把代码放在DataList的CurrentChanged里吗?


另问:动态DataList引用非主表非关联表数据能否实现类似功能?

[此贴子已经被作者于2009-1-14 17:13:44编辑过]


我就是放在CurrentChanged中的。

一般来说,反馈一个问题,最好做一个简单的例子传上来来说明,这样只管很多。

Datalist可以绑定任何DataTable


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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33963 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2009/1/14 17:45:00 [只看该作者]

老六,这问题是存在的,但我这里不象楼主说的用e.form.Close()关闭就没事,都出现相同错误


图片点击可在新窗口打开查看此主题相关图片如下:qq截图未命名.bmp
图片点击可在新窗口打开查看

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


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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/1/14 18:33:00 [只看该作者]

加个判断吧:

Dim dst As WinForm.DataList = e.Form.Controls("DataList1")
Dim dr as DataRow = dst.Current '获得选定行
if dr IsNot Nothing
    Dim Index As Integer = Tables("订单").FindRow(dr) '获得选定行在Tables("订单")中的位置
    If Index >=0 Then '如果选定行在Tables("订单")中存在
        Tables("订单").Position = Index '定位到选定行
    End If
End If


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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33963 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2009/1/14 22:28:00 [只看该作者]

老六,我倒觉得象这种数据列表和绑定主表的焦点行同步的代码不应该用户写才对,因为这种功能没有任何弊端,岂不全由你解决的好。

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/1/14 22:30:00 [只看该作者]

以下是引用czy在2009-1-14 22:28:00的发言:
老六,我倒觉得象这种数据列表和绑定主表的焦点行同步的代码不应该用户写才对,因为这种功能没有任何弊端,岂不全由你解决的好。


不应该自动同步的,因为不少的场合并不需要同步的。


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


加好友 发短信 F6
等级:狐精 帖子:3036 积分:19223 威望:0 精华:2 注册:2008/9/1 7:50:00
  发帖心情 Post By:2009/1/15 8:42:00 [只看该作者]

以下是引用kylin在2009-1-14 17:12:00的发言:
如果还有问题的话,Dim dr as DataRow = dst.Current '获得选定行,按以下修改

Dim dr as DataRow = dst.Current.datarow'获得选定行

晕,我投了个臭弹


 回到顶部