DropDownList单选与多选下拉框

一.单选DropDownList传值

1.添加界面的DropDownList显示值问题

(1)在方法内添加ViewData的方法: 

 

 var ad = new UnitsRepository();
            ViewData["datasourceid"] = new SelectList(ad.dsname(), "id", "dsname");
            ViewData["showstyleid"] = new SelectList(ad.showstyle(), "id", "name");

 

从而传值到DropDownList下拉框

(2)在试图中使用DropDownList: 

       数据元:

         @Html.DropDownList("datasourceid", ViewData["datasourceid"] as SelectList, "--请选择--", new { rows = "8", style = "width:224px" })

(3)按确认提交后,可使用POST表单提交方法在后台获得下拉框选取的值

2.编辑界面的DropDownList显示值与取值问题

(1)在方法内添加ViewData的方法:

1   var rep = new UnitsRepository().GetViewData(confid);
2             var ad = new UnitsRepository();
3             ViewData["datasourceid"] = new SelectList(ad.dsname(), "id", "dsname", rep.dsname);
4             ViewData["showstyleid"] = new SelectList(ad.showstyle(), "id", "name",rep.showstylename);
其中rep的值为:
 1  public Units GetViewData(int config)
 2         {
 3             IList<Units> result1;
 4             WiGetLinqDataContext db = new WiGetLinqDataContext();
 5             var res = (from user in db.ApplicationUnits
 6                        where user.id == config
 7                        select new
 8                        {
 9                            dsname = user.ApplicationDatasource == null ? "" : user.ApplicationDatasource.dsname,
10                            showstylename = user.ApplicationUnitsShowStyle == null ? "" : user.ApplicationUnitsShowStyle.name,
11                        }).ToList();
12             result1 = (from u in res
13                        select new Units
14                        {
15                            dsname = u.dsname,
16                            showstylename = u.showstylename,
17                        }).ToList();
18             return result1.FirstOrDefault(); 
19         }
ViewData分别调用的ad方法为:
1 public IQueryable dsname()
2         {
3             WiGetLinqDataContext db = new WiGetLinqDataContext();
4             var dsname = from m in db.ApplicationDatasource select m;
5             return dsname;
6         }

这里需要注意的是,"SelectistListItem"和"ListBox"的继承类"SelectList"可以很好很方便的进行数值的传递,第四个参数就是为DropDownList提供默认显示值,即数据库内提取出来的值

(2)在试图中的DropDownList对应的也有默认值的显示设置:数据元:

@Html.DropDownList("datasourceid", ViewData["datasourceid"] as SelectList,Model.dsname)

因为是强类型试图,所有可以有Model,其中Model.dsname就是后台ViewData获取的SelectValue了。

 
二.多选DropDownList下拉框
1.首先引用对象的Css和1.8.11JS脚本,其中Css文件有:
 
 

2.获取多选下拉框的选项值:         

 @Html.DropDownList("Publishto", ViewData["Publishto"] as SelectList, "--请选择--", new { multiple = "multiple" })

其中的ViewData获取值方式和前面的单选DropDownList下拉框类似。

这里遇到的一个不同的情况是,多选项数据来自数据库表中一个对象的其中一个属性,而不是一个表的某个属性的所有对象。

这里就那该项目为例:

W,M,T分别代表:"Web平台" , "移动平台" , "客户端平台"

而这一个字符串存在一个对象的一个属性中,但是页面中显示效果为:

 

所以在获取数据时有所不同:

后台定义一个类和方法:    

 1   public class Publishto
 2         {
 3             public string Code { get; set; }
 4             public string Name { get; set; }
 5 
 6 
 7             public static List<Publishto> GetPublishtoList()
 8             {
 9                 return new List<Publishto>
10             {
11                 new Publishto { Code = "w", Name = "Web平台" },
12                 new Publishto { Code = "m", Name = "移动平台" },
13                 new Publishto { Code = "t", Name = "客户端平台" }
14             };
15             }
16         }

分别把W,M,T赋不同的字符串,

在方法中用ViewData取值时,语法为: 

ViewData["Publishto"] = new SelectList(Publishto.GetPublishtoList(), "Code", "Name");

从而是前台显示的时候为对应的字符串。

3.多选下拉框取值的问题,可以用POST表单获取数据的方式:           

string Pub = Request.Form["Publishto"].ToString();

这样,字符串Pub就可以获得类似“W,M"等类型的字符串了,然后存入数据库就行了。

 
posted @ 2013-09-11 21:15  真假不分  阅读(2159)  评论(1编辑  收藏  举报