NoahWeb
在线搜索
NoahWeb.net | 开发者交流中心 | 支持 | 文档 | 反馈缺陷 

多值选择(Values)标签示例

我们看一看关于单选按钮和多选按钮类型控件的使用。


radio(单选按钮)
我们同样使用Input控件来实现单选按钮,我们在Input的Type中输入"radio",如下图

我们继续看,LabelClass标签和NullErrorString标签在上面都介绍过,这里不再重复。我们重点看一看下面的Values标签。BySelectArrayString用来表示一个字符串其中用可用分隔符“,”分隔多个值,该字符串对应的是该控件的可选择值已经被选中的选项。本例中,该数组名称为radiobox。如下图

继续,我们看到下面的option标签,第一个option标签是没有值的,只出现了“请选择”文字,如果你对html有所了解,相信你对它不会陌生。这样在类型为radio(单选钮)和checkbox(多选钮)的Input控件中是无法在前端显示的。在后面的select类型控件中会有显示效果。如下图

第二个option标签中出现了Value, Value中的值用来表示该控件的可选择值的值所对应的变量表达式。出现在option开始标签和结束标签中间的那个值用来表示该控件的可选择值的值所对应的名称表达式。注意不要混淆,其实这点和html是一摸一样的,如果你了解html,相信很容易理解。如下图

下面我们了解一下该控件的工作逻辑。当你选择好该控件中的一个值时,你所选的值被存放数组中。当你需要将所选的值显示在前端时,通过使用[_root.Input控件Id]来进行调用,本例中为[_root.radiobox],这里的radiobox指的是Input控件Id,而不是数组名称。如下图

如图,我们使用一个Action将所选择的值显示出来。(有关Action请参看动作部分)。如下图

在这里需要说明一下,如果控件的可选择值的值所对应的变量表达式与控件的可选择值的值所对应的名称表达式是一样的话,那么可以将前者忽略。执行动作,我们看看前端显示。如下图

例子中,我们的Input控件id和数组名称是一致的,现在我们将数组名换掉,看看是否还能正常返回所选值。如下图

我们重新操作一次,如下图

我们看到,无论Input控件的Id是否与数组名称一致,都可以正常返回所选值。如果我们使用该控件来接收一个值的时候呢?试一下。如下图

我们试一试当执行动作的时候那个值A是否能传到表单中。如下图

我们发现,值A并没有像我们期望中那样传入表单中。如果现在我们将Input控件的Id与数组名设为一致的话。如下图

再次执行动作。如下图

我们看到,值A已经正常的传入了表单。由此我们可以知道,当你的表单仅仅用来插入值的时候,Input控件的Id是否与数组名称一致是没有关系的。但是,如果你的表单同时还承载着显示返回值的任务的话,那么,Input控件的Id一定要与数组名称一致才行,切记!这是因为,当表单接收返回值的时候,系统会去寻找与Input控件的Id同名的数组,找到之后将返回值放到数组中,如果二者不同名,那么返回值将无法显示出来。解决这个问题最好的办法就是无论什么情况,都将二者设置为同名。



checkbox(多选按钮)
我们依然使用上面的示例,将Input控件的Type改为"checkbox"。如下图

前端页面显示如下图

我们看到,除了Input控件的Type的类型发生了变化之外,其他的均无变动。也就是说,你可以轻松的将控件类型改变而无需过多改动代码,这一点和html很像。另外要说的是,如同上面,当你的控件类型为radio时,数组中所保存的是单一值,因为你的控件是单选的。如果改为checkbox,那么数组保存的就会是多个值,每个值之间使用分隔符“,”分割。这是由控件类型决定的。


 

select(下拉单)
我们将上面示例中的Input控件Type改为"select"。如下图

前端页面显示如下图。

还记得上面我们没有看到显示效果的那个“请选择”吗?现在可以看到效果了。是的,如果希望你的select控件出现这样的默认值,那么就可以使用上面提到的那句代码,如下图

这句代码中,只出现了控件的可选择值的值所对应的名称表达式,它是没有值的。考虑到项目的人性化,可以使用它作为一个select控件的初始显示值。

在上面的示例中,我们了解了如何使用Values标签和option标签给控件赋值,现在,我们一起来看一看另一种给控件赋值的方法,那就是使用数据库操作集来提取返回值。我们首先来看一看代码。如下图

我们知道,在NoahWeb中,数据库操作集记录着你对数据库的一段操作,在这里使用它的意义是,你的select控件中的值,是这个数据库操作集的返回结果,至于会返回哪些值,完全取决于你的数据库操作集是怎样操作数据库的。我们首先来看一看示例中的数据库操作集。如下图

我们看到,该操作集返回了数据表H_Role的所有字段,是没有条件的。回到from文件我们继续看,ValuesSQLLink用来表示该控件的可选择值来源的数据库查询。如下图

当你使用该select控件的时候,你所选的值将被存放数组里,这一点上面的示例已经谈到。而这里的ValuesSQLValue用来表示该控件的可选择值的值所对应的变量表达式,这和上面的option标签的Value参数作用是一致的。如下图

是的,数据库字段guid将被作为select控件的可选择值的值所对应的变量表达式存放在数组中。而后面的ValuesSQLLabel则是表示该控件的可选择值的值所对应的名称表达式。如下图

我们可以看出,数据库字段name被作为控件的可选择值的值所对应的名称表达式出现在下拉单中,而每个name所对应的guid字段被作为控件的可选择值的值所对应的变量表达式存放在数组中。现在让我们看一看示例中的下拉单到底有那些值。如下图

我们再去看看数据表中的name字段。如下图

也就是说,我们使用了一个返回所有字段的数据库操作集,我们将返回的name字段作为控件的可选择值的值所对应的名称表达式放在下拉单中,将返回字段guid作为控件的可选择值的值所对应的变量表达式放在数组中,以便以后的使用。当你点击这个下拉单选择一个值的时候,所选值所对应的guid字段值被存放在数组中。

使用数据库返回值作为下拉单的选项是非常有好处的。例如,你对目标数据表做了添加操作,那么,这个下拉单就会多出一个选项,同样,当你删除了一条记录的时候,下拉单就会相应的减少一个选项,从而你不必手动填写下拉单的可选项。这样就实现了“动态下拉单”,能够合理的使用动态下拉单,将对你日后的系统维护提供很大的方便。

 

 

 

查看NoahWeb在线手册

Copyright © 2001-2004 The NoahWeb Corporation
All rights reserved.