敏捷思维学习Ext.Net MVC--3.9Form表单组件之多项选择下拉菜单
经过了上一节对前后台通信的扩展我们可以开发一些很实用的组件,以往的下拉菜单往往是单项选择的,ExtJs中X.ComboBoxFor()函数不单能自动生成单项选择的下拉菜单,而且当使用数据结构IEnumerable
在Model中添加以下类
public class ComboxFieldAnimal
{
[Field(FieldLabel = "单选")]
public ListItem ComboSingle
{
get;
set;
}
[Field(FieldLabel = "多选")]
public IEnumerable
{
get;
set;
}
[Field(FieldLabel = "使用ID选择")]
public string ComboByID
{
get;
set;
}
public IEnumerable
{
get;
set;
}
}
IEnumerable
一、在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();
}
@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")
)
)
)
(1)使用ListItem对象生成ComboBox控件,此控件为单选控件。
(2)使用IEnumerable
(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")后面的那个数字,由于是多项选择