Foxtable(狐表)用户栏目专家坐堂 → 动态DataList如何定位引用数据所在表的位置?


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

主题:动态DataList如何定位引用数据所在表的位置?

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


加好友 发短信 菜鸟中的老鸟
等级:七尾狐 帖子:1486 积分:10064 威望:0 精华:9 注册:2008/11/14 8:54:00
动态DataList如何定位引用数据所在表的位置?  发帖心情 Post By:2009/2/3 13:25:00 [只看该作者]

动态DataList如何定位引用数据所在表的位置?引用数据存在完全重复行.




此主题相关图片如下:001.jpg
按此在新窗口浏览图片
双击DataList打开修改窗口,请问如何设置保存按钮进行引用数据行的修改?
 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:datalist定位.table


帮助里的示例是已经绑定的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 '获得选定行
If
dr Is Nothing Then
    Return
End
If
Dim
Index As Integer = Tables("订单").FindRow(dr) '获得选定行在Tables("订单")中的位置
If
Index >=0 Then '如果选定行在Tables("订单")中存在
   
Tables("订单").Position = Index '定位到选定行
    Forms(
"窗口1").Open() '打开编辑窗口
End
If



[此贴子已经被作者于2009-2-6 16:27:03编辑过]

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


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

你既然可以编码从每一列中取值写入到控件中,报促南牛你就反过来即可,从每个空间中读取值写入到对应的列中。

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


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

以下是引用狐狸爸爸在2009-2-3 15:29:00的发言:
你既然可以编码从每一列中取值写入到控件中,报促南牛你就反过来即可,从每个空间中读取值写入到对应的列中。

取值写入控件的数据是来自DataList.而不是来自表

反过来不是问题,问题在于该行数据的定位...

由于数据存在重复行,我无法保证该行数据的唯一性...

[此贴子已经被作者于2009-2-3 15:59:26编辑过]

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


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

DataList的Current属性,就表示所邦定的行,向这一行写入数据即可

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


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

类似这样?
Dim
dst As WinForm.DataList = e.Form.Controls("DataList1")
Dim
dr as DataRow = dst.Current '获得选定行
Dim Index As Integer = Tables("某表").FindRow(dr) '获得选定行在Tables("订单")中的位置


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


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

也可以啊

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


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

上面的方法只能针对一个表的Datalist....
如果datalist来自两个表就无能为力了...

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


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

Dim dst As WinForm.DataList = e.Form.Controls("DataList1")
Dim dr as DataRow = dst.Current '获得选定行
dr("某列1") = e.Form.Controls("某控件1").Value
dr("某列2") = e.Form.Controls("某控件2").Value
....
dst.DataTable.Save()




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


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

老爹,是把dst.current理解为数据来源表.current吗?


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


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

这个直接保存到后台了,保存后表1和表2显示的还是原来的数据,需要重新load才行
感觉你将系统做得有点偏离实际了,没必要分开表,一个表处理最简单,反正有动态加载的功能。

 回到顶部
总数 13 1 2 下一页