以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  动态DataList如何定位引用数据所在表的位置?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=1720)

--  作者:菜鸟foxtable
--  发布时间:2009/2/3 13:25:00
--  动态DataList如何定位引用数据所在表的位置?
动态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编辑过]

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

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

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

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

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

--  作者:狐狸爸爸
--  发布时间:2009/2/3 15:59:00
--  
DataList的Current属性,就表示所邦定的行,向这一行写入数据即可
--  作者:菜鸟foxtable
--  发布时间: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("订单")中的位置


--  作者:狐狸爸爸
--  发布时间:2009/2/3 16:16:00
--  
也可以啊
--  作者:菜鸟foxtable
--  发布时间:2009/2/3 16:24:00
--  
上面的方法只能针对一个表的Datalist....
如果datalist来自两个表就无能为力了...
--  作者:狐狸爸爸
--  发布时间: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
--  发布时间:2009/2/3 16:52:00
--  

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


--  作者:狐狸爸爸
--  发布时间:2009/2/3 16:56:00
--  
这个直接保存到后台了,保存后表1和表2显示的还是原来的数据,需要重新load才行
感觉你将系统做得有点偏离实际了,没必要分开表,一个表处理最简单,反正有动态加载的功能。