敏捷思维学习Ext.Net MVC--3.9Form表单组件之多项选择下拉菜单
来源:互联网 发布:经纬度距离计算器软件 编辑:程序博客网 时间:2024/05/16 04:20
敏捷思维学习Ext.Net MVC--3.9Form表单组件之多项选择下拉菜单
经过了上一节对前后台通信的扩展我们可以开发一些很实用的组件,以往的下拉菜单往往是单项选择的,ExtJs中X.ComboBoxFor()函数不单能自动生成单项选择的下拉菜单,而且当使用数据结构IEnumerable<ListItem> 时还可以自动生成多选下拉菜单项,但是如何接收数据成了一个问题,我试了好久都没有成功,有了Bind(Prefix = "Enums.ESex")函数后就方便多了我们可以很方便的读出各种各样的数据类型。
在Model中添加以下类
public class ComboxFieldAnimal
{
[Field(FieldLabel = "单选")]
public ListItem ComboSingle
{
get;
set;
}
[Field(FieldLabel = "多选")]
public IEnumerable<ListItem> ComboMulti//(1)
{
get;
set;
}
[Field(FieldLabel = "使用ID选择")]
public string ComboByID
{
get;
set;
}
public IEnumerable<ListItem> animals
{
get;
set;
}
}
IEnumerable<T>泛型接口是使用C#2.0泛型技术实现的一个接口,该接口允许对接口内部的元素进行列举操作,实现了IEnumerable<T>接口的集合对象叫做序列,可以在这个集合对象上使用标准查询操作符。我们这里只是建立了一个简单的对象没有用到特殊的方法,按照我们敏捷的哲学我们在这里只对它进行简单的了解具体的功能我们在使用中慢慢学习。
一、在FormController中添加以下函数:
public ActionResult ComBoxField()
{
ComboxFieldAnimal CFAnimal = new ComboxFieldAnimal//(1)
{
ComboSingle = new ListItem("狗", "1"),
ComboMulti=new ListItem[]{
new ListItem("狗", "1"),
new ListItem("猫","3")
},
ComboByID="2",
animals = new ListItem[]{
new ListItem("狗", "1"),
new ListItem("鸟", "2"),
new ListItem("猫","3"),
new ListItem("老虎", "4"),
new ListItem("熊", "5")
}
};
return View(CFAnimal);
}
(1)新建ComboxFieldAnimal对象CFAnimal并将此对象推送到View端
二、为此函数添加View界面ComBoxField.cshtml,将该文件内容替换如下:
@model ExtExamples.Models.ComboxFieldAnimal
@{
Layout = null;
var X = Html.X();
}
<!DOCTYPE html>
<html>
<head>
<title>ComBoxField</title>
</head>
<body>
@X.ResourceManager()
@(
X.FormPanel()
.Title("下拉菜单")
.Width(300)
.Height(300)
.Margin(10)
.Items(
X.ComboBoxFor(m => m.ComboSingle).Items(Model.animals),//(1)
X.ComboBoxFor(m=>m.ComboMulti).Items(Model.animals),//(2)
X.ComboBoxFor(m=>m.ComboByID).Items(Model.animals),//(3)
X.Button()
.ID("Text_submit")
.Text("提交")
.Disable(true)
.FormBind(true)
.DirectClickUrl(Url.Action("ComBoxFieldSubmit")
)
)
)
</body>
</html>
(1)使用ListItem对象生成ComboBox控件,此控件为单选控件。
(2)使用IEnumerable<ListItem> 对象生成的多选ComboBox控件。
(3) 使用string对象ComboByID生成的单选ComboBox控件。
三、添加提交数据处理函数ComBoxFieldSubmit 从提交的Request中提取需要读取的数据:
public ActionResult ComBoxFieldSubmit([Bind(Prefix = "ComboMulti")]int[] multi, [Bind(Prefix = "ComboByID")]int ById, [Bind(Prefix = "ComboSingle")]int Single)//(1)
{
ComboxFieldAnimal CFAnimal = new ComboxFieldAnimal
{
ComboSingle = new ListItem("狗", "1"),
ComboMulti = new ListItem[]{
new ListItem("狗", "1"),
new ListItem("猫","3")
},
ComboByID = "2",
animals = new ListItem[]{
new ListItem("狗", "1"),
new ListItem("鸟", "2"),
new ListItem("猫","3"),
new ListItem("老虎", "4"),
new ListItem("熊", "5")
}
};
string MultiAnimal="";
int length = multi.Count();
for (int i = 0; i < length; i++)
{
int j=multi[i];
MultiAnimal += CFAnimal.animals.ToArray()[j-1].Text;
}
string ByIdAnimal = "";
ByIdAnimal = CFAnimal.animals.ToArray()[ById-1].Text;
string SingleAnimal = CFAnimal.animals.ToArray()[Single-1].Text;//(2)
string formString = "单选值为:";
formString += SingleAnimal;
formString += " 多选值为:";
formString += MultiAnimal;
formString += " 使用ID选择值为:";
formString += ByIdAnimal;
// string single = CFAnimal.ComboSingle.Value;
X.Msg.Alert("Employee", formString).Show();
return this.Direct();
}
(1)三种生成方式生成的comobox,多选ComboBox控件提交数据的绑定函数Bind(Prefix = "ComboMulti")]int[] multi,这里需要注意ComboBox控件提交上来的数据都是数据的ID属性,即ListItem("狗", "1")后面的那个数字,由于是多项选择提交上的就是整型数字列表。ListItem对象生成ComboBox控件绑定函数[Bind(Prefix = "ComboSingle")]int Single,string对象ComboByID生成的单选ComboBox控件与上面绑定函数相同[Bind(Prefix = "ComboByID")]int ById。
(2)CFAnimal.animals.ToArray()将IEnumerable<ListItem> animals对象转换为数列,使用数列读取其中数据的文本值,这里需要注意数列的下标是从0开始的,而我们创建IEnumerable<ListItem>时是从1开始的,所以这里需要将传回的下标值减去1得到的才是所需的数据。
- 敏捷思维学习Ext.Net MVC--3.9Form表单组件之多项选择下拉菜单
- 敏捷思维学习Ext.Net MVC--3.5Form表单组件之下拉菜单(ComboBox)
- 敏捷思维学习Ext.Net MVC--3.10Form表单组件之其它常用组件
- 敏捷思维学习Ext.Net MVC --3.1Form表单组件之文本字段
- 敏捷思维学习Ext.Net MVC--3.4Form表单组件之数字字段
- 敏捷思维学习Ext.Net MVC--3.5Form表单组件之复选组件(checkbox)暨母版页
- 敏捷思维学习Ext.Net MVC--3.7Form表单组件之单选组件组(RadioGroup)
- 敏捷思维学习Ext.Net MVC--3.8Form表单组件之使用Enum升级复选组件组(CheckboxGroup)暨前后台终极通信方式
- 敏捷思维学习Ext.Net MVC--3.2Form表单之文本字段与后台通信的基本方式(简介Request对象)
- 敏捷思维学习Ext.Net MVC--2.环境配置
- 敏捷思维学习Ext.Net MVC--1.为什么是Ext.NET MVC
- 敏捷思维学习Ext.Net MVC--3.3文本字段与后台的高级通信(model)
- 黑马程序员-html之表单组件<form>,下拉菜单<select>,文本域<textarea>
- Ext中form表单中的选择
- Ext.Net Combobox控件 多项选择的变通实现方式
- 学习笔记8--bootstrap:布局组件之“下拉菜单”
- 学习笔记8--bootstrap:布局组件之“下拉菜单”
- [Ext.Net]GridPanel行选择右键菜单
- CacheHelper缓存类
- Raspbian中的OMXPlayer播放器的使用
- 排序算法
- Linux输入子系统分析(二)
- Java创建线程的两个方法
- 敏捷思维学习Ext.Net MVC--3.9Form表单组件之多项选择下拉菜单
- treeSet中自定义Comparator类来定义排序规则
- valgrind使用方法
- 矩形嵌套 简单DP 最长上升子序列
- CVS配置和登录
- Linux下的进程间通信-详解
- 1006. Sign In and Sign Out (25)
- 让你提前认识软件开发(1):序言
- PreferenceActivity详解