怎样建立一个这样的表单。100分,不够再给

mikej 2003-02-25 02:40:15
想建立这样一个表单:

表单上面有几个超级链接,点击链接打开新的窗口,出现一个新的表单,让用户填写。用户填写完毕,新的窗口自动关闭。

依次填写新窗口。

当所有的都填写完毕时。提交这个带有很多链接的表单。保存成文档。

以后打开这个文档,点击每个链接都可以看到原来在新窗口中填写的相关表单。

只求实现的思路,不求源代码!如果分不够,可以再给。保证。。。
...全文
49 36 打赏 收藏 举报
写回复
36 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
jca 2003-02-26
使用javascript
在子表单的提交按纽里使用javascript把子表单的值付值给父窗口
window.parent.document.forms[0].a.value=document.forms[0].a.value;
然后进行判断是否结束输入,如果是
则调用父窗口的保存按纽的click事件
window.parent.document.forms[0].button.click();
window.close()
否则
window.close()
  • 打赏
  • 举报
回复
aqsir 2003-02-26
如果你说的是c/s结构下的就很好解决的(b/s我不会)
在主表单上建两行链接文本,并将主表单设置为自动刷新域:
子表单(隐藏公式为:flag="true",执行代码1)
子表单(隐藏公式为:flag="false",设置为链接热点写公式"http://.../Cid?opendocument")
创建两个隐藏域:flag(用来标记是否创建了子表单),Cid(记录子表单的ID号)
在子表单form1中创建一个隐藏域:Pid(记录主文档的ID号),并新建一个按钮用于当用户填写完毕后点击执行代码2。
另外需新建一视图all,视图选择公式可以不写,第一列必须为排序列且列公式为@text(@DocumentUniqueID).
代码1:
Dim session As New notessession
Dim ws As New notesuiworkspace
Dim uidoc As notesuidocument
Dim docid As String
Dim db As Notesdatabase
Dim newdoc ,doc As notesdocument
Set db=session.currentdatabase
Set uidoc=ws.currentdocument
Set doc=uidoc.document
docid=doc.UniversalID
Call doc.save(True,True)
doc.saveoptions=0
Call uidoc.close
Set uidoc = ws.ComposeDocument _
( "", "", "form1" ) '创建子文档
Set newdoc=uidoc.document
newdoc.Pid=docid '将父文档的ID传给新建的子文档
代码2:
Dim session As New notessession
Dim ws As New notesuiworkspace
Dim uidoc As notesuidocument
Dim docid,key As String
Dim db As Notesdatabase
Dim Pdoc ,doc As notesdocument
Dim view As notesview
Set db=session.currentdatabase
Set uidoc=ws.currentdocument
Set doc=uidoc.document
Set view=db.getview("all")
Call doc.save(True,True)
doc.saveoptions=0
Call uidoc.close
docid=doc.UniversalID
key=doc.Pid(0)
Set Pdoc=view.Getdocumentbykey(key,True)
Pdoc.flag="true"
Pdoc.Cid=docid
Call Pdoc.save(True,False)
Set uidoc=ws.Editdocument(True,Pdoc)
  • 打赏
  • 举报
回复
cslion 2003-02-26
9494
  • 打赏
  • 举报
回复
mikej 2003-02-26
关键是小表单提交的时候,运行的代理,怎么可能识别出主表单呢?这一点我想不明白
  • 打赏
  • 举报
回复
jca 2003-02-26
如果你是担心这个问题,我有一个方法
你在主表单上建立一个按纽b。该按纽b用来保存文档,然后在小表单的提交按纽里调用按纽b的click事件就可以了.
  • 打赏
  • 举报
回复
aqsir 2003-02-26
胖胖,你就用我那段代码,我已经测试过了的没有问题的
  • 打赏
  • 举报
回复
rugl 2003-02-26
表单上面有几个超级链接,点击链接打开新的窗口,出现一个新的表单,让用户填写。用户填写完毕,新的窗口自动关闭。

你所谓的“出现一个新的表单”是指还是原来的表单,只不过是弹出一个新的窗口而已?从头到尾都只用到一个表单?

如果是这样,那么我理解错了,不好意思。
  • 打赏
  • 举报
回复
mikej 2003-02-26
比如说有1个表单A,上面有2个链接

我要用表单A创建2个文档,为此我要另外写2×2=4个表单,这不浪费吗?
  • 打赏
  • 举报
回复
rugl 2003-02-26
我忘了把里面的几份文档删掉,你可以在notes下把它们删掉,然后自己再创建试一下。
  • 打赏
  • 举报
回复
rugl 2003-02-26
已发出,请查收。
  • 打赏
  • 举报
回复
mikej 2003-02-26
我的email是:xiaofengji01@mails.tsinghua.edu.cn.


对你说的还是很不理解:)
  • 打赏
  • 举报
回复
rugl 2003-02-26
表单A你爱创建多少个文档就创建多少个文档。关键是表单B等只能创建一个文档,对吧?

如果愿意,留下email,我给你发一个库过去,你看看,能不能用。
  • 打赏
  • 举报
回复
mikej 2003-02-26
我的意思是表单A也可以创建好多文档,你这个表单A只能创建一个文档吧?
  • 打赏
  • 举报
回复
rugl 2003-02-26
在表单A上,点击一个链接操作用表单B生成一份文档,当然可以点击另一个操作用另一个表单生产另一份文档,只要保证每一个表单只生成一份文档,以后点击时只是打开相应的文档即可,楼主不就是这个意思吗?
  • 打赏
  • 举报
回复
mikej 2003-02-26
同意aqsir的说法,rugl的说法没什么实际意义,只能创建一份文档
  • 打赏
  • 举报
回复
aqsir 2003-02-26
那你这样做只能用a表单创建一份B文档,没有什么现实意义的,也没有达到楼主的要求
  • 打赏
  • 举报
回复
rugl 2003-02-26
不好意思,上面的aa:=@DbColumn("":"";"";"C";1)中少了一个引号。

至于为什么只有一个值,是通过下面的@if控制的,请仔细看一下,当视图C没有文档的时候,即(aa="")的时候,执行(Command([Compose];"B"),新建一份文档,当视图C一有值,即(aa="")不成立,执行的是"(@Do(@Command([OpenView]; "C";aa);@Command([OpenDocument]))),即打开已经存在的文档,所以不可能产生第二份文档。

有什么不妥可以讨论。
  • 打赏
  • 举报
回复
tanlin1978 2003-02-26
在B/S下为什么不用JS呢?更简单:

window.opener.document.forms[0].域名1.value=document.forms[0].域名2.value

其中window.opener.document表示父表单,document表示当前表单
  • 打赏
  • 举报
回复
aqsir 2003-02-26
b/s的请大家讨论讨论!
rugl(rugl) 老兄的方法好像行不通呀!aa:=@DbColumn("":"";"";"C;1),不可能只有一个值的,请三思。
  • 打赏
  • 举报
回复
rugl 2003-02-26
哎,没有那么麻烦的,举个例子

你有一个表单A,上面有很多个链接操作,举个例子,上面有一个链接操作F,第一次点击时想用表单B生成一份新文档,以后再点击就是打开这份文档。

要实现这样的功能,先给表单B建一对应的视图C,选择条件为表单B生成的文档,第一列的值随意为表单B的一个域,并给他排序。

最后,在链接操作F中写公式如下:

aa:=@DbColumn("":"";"";"C;1);
@If(aa="";@Command([Compose];"B");@Do(@Command([OpenView]; "C";aa);@Command([OpenDocument])))
  • 打赏
  • 举报
回复
加载更多回复(16)
相关推荐
发帖
消息协作

531

社区成员

企业开发 Exchange Server
社区管理员
  • 消息协作社区
加入社区
帖子事件
创建了帖子
2003-02-25 02:40
社区公告
暂无公告