以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  有关datalist多列修改数据的保存  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=2460)

--  作者:baoxyang
--  发布时间:2009/4/15 17:41:00
--  有关datalist多列修改数据的保存
在datalist1中捆绑了数据表A,通过筛选得到很多列数据,其中对选中的项进行修改列数据,如何保存这些修改列数据到数据表A中?
--  作者:baoxyang
--  发布时间:2009/4/15 17:47:00
--  

另外一个问题,datalist1中捆绑了数据表A,通过条件选择条件取数据表A中数据,第一次选择时已存在datalist1中,希望第二次选择条件取数据表A的数据,如何实现可以累加到datalist1表中。


--  作者:狐狸爸爸
--  发布时间:2009/4/15 17:56:00
--  

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

要特别留意FindRow的用法,该用法在多表多窗口协同工作的时候非常有用。
推广开来,我们可以用针对主表的录入窗口来输入关联表数据,如何实现,大家可以自己想一想。

 


--  作者:baoxyang
--  发布时间:2009/4/15 18:00:00
--  

我在Datalist1中看到已修改了,但绑定的数据表A(数据库表)没有修改呀?怎么保存,不知保存语句。


--  作者:狐狸爸爸
--  发布时间:2009/4/15 18:02:00
--  
修改是同步的,DataList的数据来自DataTable,不可能DataList改了,DataTale没有改。

可能只是数据表的显示还没有来得及刷新吧。
--  作者:baoxyang
--  发布时间:2009/4/15 18:03:00
--  
请教,第二个问题如何实现?
--  作者:狐狸爸爸
--  发布时间:2009/4/15 18:08:00
--  [建议]功能需求(统计)
看不明白第二个问题。
--  作者:狐狸爸爸
--  发布时间:2009/4/15 18:11:00
--  
另:提问之后,如果有人回答,不管是否已经解决,你都应该有个答复,一是为了尊重帮助你的人,二是让其他人了解这样的答复是否已经解决问题,或者是否是其他因素导致的。
[此贴子已经被作者于2009-4-15 18:12:40编辑过]

--  作者:baoxyang
--  发布时间:2009/4/15 18:24:00
--  
不是,我从数据库后台,到现在还是没有修改呀。


--  作者:baoxyang
--  发布时间:2009/4/15 18:31:00
--  

第二个问题,datalist1中捆绑了数据表A,通过条件选择取数据表A中数据后,如datalist1中,有三行数据;如第二次通过其它条件选择时有5条数据,如何实现可以累加到datalist1表中,使得共有8条数据显示呢。