歡迎大家來到第三天的學(xué)習(xí),真高興又見到你! 在前兩天的課程中,我們一起熟悉了NoahWeb中的表單資源. 今天一起來學(xué)習(xí)在表單中傳值的方法。先讓我們先從一個舉個例子來說吧!在一個應(yīng)用中我們?yōu)樘砑佑脩羲璧妮斎氩僮髦谱骱靡槐韱,可以滿足新建一個用戶時候的信息輸入了,而當(dāng)修改用戶個人資料的時候,也使用一個表單將先前填寫的資料回顯出來.這樣的情況我們沒有必要為這個功能再去寫一張表單,用之前的的那個就OK了!
而關(guān)于回顯出用戶資料,就需要了解NoahWeb中的表單傳值了.還是看著代碼來說吧!這樣說得明白!^_^
<Form Id="faqstatusadd" Text="DEMO" A="Value"> <Line Text=""> <InputLine Text="A:" Desc=""> <Input Id="faqstatusname" Type="text" LinkValue="[A]"> <Label></Label> <LabelClass>label</LabelClass> <NullErrorString>Error!</NullErrorString> <class>myinputstyle</class> </Input> </InputLine>
上面不是一個完整的表單我只把要說的代碼貼出來了。需要講的重點我也加粗了。
第一步:在需要傳值的表單的Form標(biāo)簽中添加一個接收值的變量.例子中就是A="Value"這一段,這么說吧!引號中的Value就是傳過來的值,既然傳過來了,表單這邊需要有個變量來接收不是嗎?所以創(chuàng)建了一個叫做A的變量來接收值.
第二步:現(xiàn)在值傳過來了,就該想想辦法讓它在表單中顯示出來.這需要使用Input標(biāo)簽的LinkValue參數(shù).這個參數(shù)指的是回顯所對應(yīng)的變量表達式。
第三步:將LinkValue參數(shù)寫到需要回顯出值的Input中去.就像例子中這樣:LinkValue="[A].希望用哪個Input來回顯這個值,就加入LinkValue參數(shù),而這個參數(shù)后跟的自然就是剛才已經(jīng)接受到值的那個變量。NoahWeb中變量表示的方法我在第二天的時候已經(jīng)和大家提過,要了解更多可以查看官方文檔。
第四步:想要顯示出這張表單則需要一個“動作”,“動作”是NoahWeb的靈魂。調(diào)用任何資源都需要使用“動作”來完成。由于現(xiàn)在是在談表單,所以就不討論“動作”了。使用一個“動作”來調(diào)用這個表單,這需要用到ViewForm標(biāo)簽,它的作用就是顯示出一張表單。并且傳個值試一試.還是看代碼吧!
<Action name="manager.addfaqstaus" NextAction=""> <Out Area="main"> <ViewForm FormLink="faqstatusadd" TemplateLink="baset2form" Action="setfaqstausinfo_ex" > <Var Value="'DEMO'" /> </ViewForm> </Out> </Action>
這是一段動作中調(diào)用表單的代碼,使用了Var標(biāo)簽給表單傳了一個值,無論這個值是什么,像例子中這樣手動寫入一個值,還是查詢數(shù)據(jù)庫返回一個值都可以,因為剛才我們在表單那邊已經(jīng)做好的接收并顯示的工作,所以這個值可以順利的顯示出來.如下圖:
其實這個傳值的道理非常簡單,就是用一個變量接收一個傳進來的值,再找一個Input接收而已.很簡單!
如果是傳多個值,這時候就是被選值為多選的情況下經(jīng)常出現(xiàn)的,傳值的道理是一樣的,只不過這次需要使用","號將需要傳過去的幾個值分隔,在Input控件里回顯的時候則是使用Values標(biāo)簽中的BySelectArrayString屬性,而之前說的LinkValue只是用于單個輸入值或是被選值的,如果是多個則使用Values中的BySelectArrayString!看下面代碼:
我們可以在定義表單的時候使用
<Form Id="faqstatusadd" Text="DEMO" A="Value" B="Value">
上面的方式來接受兩個變量值,然后在使用的Input中如下:
<Input Id="mygroup" Type="choice"> <Label>可選擇</Label> <LabelB>已選擇</LabelB> <LabelClass>label</LabelClass> <size>10</size> <NullErrorString>Error!</NullErrorString> <Values BySelectArrayString="[B]"> <option Value="1">a</option> <option Value="2">b</option> <option Value="3">c</option> <option Value="4">d</option> <option Value="5">e</option> </Values> </Input>
這是個choice類型控件,有五個可選值,a,b,c,d,e現(xiàn)在我們想要回顯出a,b和d的值,那就在動作調(diào)用表單時寫入下面的代碼:
<Action name="manager.addfaqstaus" NextAction=""> <Out Area="main"> <ViewForm FormLink="faqstatusadd" TemplateLink="baset2form" Action="setfaqstausinfo_ex" > <Var Value="'DEMO'" /> <Var Value="'1,2,4'" /> </ViewForm> </Out> </Action>
這時候我們給表單傳遞了兩個值進去,被表單接受后分別就成了A和B,表單被顯示出來后顯示結(jié)果如下圖:
如果需要回顯的多個值需要使用查詢數(shù)據(jù)庫的返回結(jié)果,那么你可以使用Loop依次循環(huán)出這些值,寫進一個數(shù)組,就OK了!我在這里就不再多說了.
好啦!寫了這么多,大家慢慢看吧!我有點累,洗洗睡啦!明天再寫……
出處:藍色理想
責(zé)任編輯:藍色
上一頁 第二天 下一頁 第四天
◎進入論壇網(wǎng)絡(luò)編程版塊參加討論
|