4天学会 NoahWeb 表单 - 第三天

欢迎大家来到第三天的学习,真高兴又见到你! 在前两天的课程中,我们一起熟悉了NoahWeb中的表单资源. 今天一起来学习在表单中传值的方法。先让我们先从一个举个例子来说吧!在一个应用中我们为添加用户所需的输入操作制作好一表单,可以满足新建一个用户时候的信息输入了,而当修改用户个人资料的时候,也使用一个表单将先前填写的资料回显出来.这样的情况我们没有必要为这个功能再去写一张表单,用之前的的那个就OK了!

而关于回显出用户资料,就需要了解NoahWeb中的表单传值了.还是看着代码来说吧!这样说得明白!^_^

> >

 1<form **="" **a="Value" id="faqstatusadd" text="DEMO">   
 2&gt;  <line text="">   
 3&gt;  <inputline desc="" text="A:">   
 4&gt;  <input **="" **linkvalue="[A]" id="faqstatusname" type="text"/>   
 5&gt;  <label></label>   
 6&gt;  <labelclass>label</labelclass>   
 7&gt;  <nullerrorstring>Error!</nullerrorstring>   
 8&gt;  <class>myinputstyle</class>   
 9&gt;     
10&gt;  </inputline>
11&gt; 
12&gt; 上面不是一个完整的表单我只把要说的代码贴出来了。需要讲的重点我也加粗了。 
13
14第一步:在需要传值的表单的Form标签中添加一个接收值的变量.例子中就是 **A="Value"** 这一段,这么说吧!引号中的Value就是传过来的值,既然传过来了,表单这边需要有个变量来接收不是吗?所以创建了一个叫做A的变量来接收值. 
15
16第二步:现在值传过来了,就该想想办法让它在表单中显示出来.这需要使用Input标签的LinkValue参数.这个参数指的是回显所对应的变量表达式。 
17
18第三步:将LinkValue参数写到需要回显出值的Input中去.就像例子中这样:LinkValue="[A].希望用哪个Input来回显这个值,就加入LinkValue参数,而这个参数后跟的  自然  就是刚才已经接受到值的那个变量。NoahWeb中变量表示的方法我在第二天的时候已经和大家提过,要了解更多可以查看官方文档。 
19
20第四步:想要显示出这张表单则需要一个“动作”,“动作”是NoahWeb的灵魂。调用任何资源都需要使用“动作”来完成。由于现在是在谈表单,所以就不讨论“动作”了。使用一个“动作”来调用这个表单,这需要用到ViewForm标签,它的作用就是显示出一张表单。并且传个值试一试.还是看代码吧! 
21
22&gt; &gt; <action name="manager.addfaqstaus" nextaction="">   
23&gt;  <out area="main">   
24&gt;  ** <viewform action="setfaqstausinfo_ex" formlink="faqstatusadd" templatelink="baset2form">   
25&gt;  <var value="'DEMO'"></var>   
26&gt;  </viewform>   
27&gt;  ** </out>   
28&gt;  </action>
29
30这是一段动作中调用表单的代码,使用了Var标签给表单传了一个值,无论这个值是什么,像例子中这样手动写入一个值,还是查询数据库返回一个值都可以,因为刚才我们在表单那边已经做好的接收并显示的工作,所以这个值可以顺利的显示出来.如下图: 
31
32![](http://edu.chinaz.com/Files/BeyondPic/DAB75DE56FB448D533F46D1B0DDC157B.GIF)
33
34其实这个传值的道理非常简单,就是用一个变量接收一个传进来的值,再找一个Input接收而已.很简单! 
35
36如果是传多个值,这时候就是被选值为多选的情况下经常出现的,传值的道理是一样的,只不过这次需要使用","号将需要传过去的几个值分隔,在Input控件里回显的时候则是使用Values标签中的BySelectArrayString属性,而之前说的LinkValue只是用于单个输入值或是被选值的,如果是多个则使用Values中的BySelectArrayString!看下面代码: 
37
38我们可以在定义表单的时候使用 
39
40&gt; &gt; <form **="" **a="Value" **b="Value" id="faqstatusadd" text="DEMO">
41
42上面的方式来接受两个变量值,然后在使用的Input中如下: 
43
44&gt; &gt; <input id="mygroup" type="choice"/>   
45&gt;  <label>可选择</label>   
46&gt;  <labelb>已选择</labelb>   
47&gt;  <labelclass>label</labelclass>   
48&gt;  <size>10</size>   
49&gt;  <nullerrorstring>Error!</nullerrorstring>   
50&gt;  <values **="" **byselectarraystring="[B]">   
51&gt;  <option value="1">a</option>   
52&gt;  <option value="2">b</option>   
53&gt;  <option value="3">c</option>   
54&gt;  <option value="4">d</option>   
55&gt;  <option value="5">e</option>   
56&gt;  </values>   
57&gt;  
58
59这是个choice类型控件,有五个可选值,a,b,c,d,e现在我们想要回显出a,b和d的值,那就在动作调用表单时写入下面的代码: 
60
61&gt; &gt; <action name="manager.addfaqstaus" nextaction="">   
62&gt;  <out area="main">   
63&gt;  ** <viewform action="setfaqstausinfo_ex" formlink="faqstatusadd" templatelink="baset2form">   
64&gt;  <var value="'DEMO'"></var>   
65&gt;  ** ** <var value="'1,2,4'"></var>   
66&gt;  </viewform>   
67&gt;  ** </out>   
68&gt;  </action>
69&gt; 
70&gt; 这时候我们给表单传递了两个值进去,被表单接受后分别就成了 **A** 和 **B** ,表单被显示出来后显示结果如下图: 
71
72![](http://edu.chinaz.com/Files/BeyondPic/16D8E9C0D0304385A283EC5EBE4A6CDF.GIF)
73
74如果需要回显的多个值需要使用查询数据库的返回结果,那么你可以使用Loop依次循环出这些值,写进一个数组,就OK了!我在这里就不再多说了. 
75
76好啦!写了这么多,大家慢慢看吧!我有点累,洗洗睡啦!明天再写……</form></line></form>
Published At
Categories with 网页设计
Tagged with
comments powered by Disqus