首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

联动上拉,赋值的有关问题

2012-09-24 
联动下拉,赋值的问题。省市联动,然后保存。可以正常实现。页面刷新后,想把保存的结果赋值到下拉列表中。省份列

联动下拉,赋值的问题。
省市联动,然后保存。可以正常实现。

页面刷新后,想把保存的结果赋值到下拉列表中。

省份列表可以被赋值,城市列表无法赋值,因为为省份列表赋值的时候,没有触发省份列表的change事件,所以城市列表为空。请问这种情况应该如何处理??

附代码:
页面:

HTML code
@Html.DropDownListFor(m => m.Residence1, Model.GetBuildings(), "请选择", new { @id = "Builds" })@Html.DropDownListFor(m => m.Residence2, Model.GetUnits(""), new { @id = "BUnits" })


页面对应JS:
JScript code
$(function () {    $("#Builds").change(function () {    var selectedvalue = $(this).val();    var url = "/Account/BuildUnits";    $("#BUnits").find("option").remove();  //清空    $.post(url, { bnum: selectedvalue },        function (data) {            $.each(data, function (i, item) {                $("<option></option>").val(item["Value"]).text(item["Text"]).appendTo($("#BUnits"));            });        });    });});


Controller:
C# code
        [Authorize(Roles = "0,1,2")]        [HttpPost]        [ActionName("BuildUnits")]        public JsonResult BuildUnits(string bnum)        {            List<SelectListItem> items = new List<SelectListItem>();            items.Add(new SelectListItem { Text = "请选择", Value = "0" });            if (bnum != "")                try                {                    .........                }                catch (Exception ex)                {                    ModelState.AddModelError("", ex.Message);                }            return Json(items, JsonRequestBehavior.AllowGet);        }


[解决办法]
把省份列表的change事件里的代码封装成一个方法,绑定省份后再调用一下这个方法不就得了么...
[解决办法]
再省级的select里面放一个 onchange事件····这样选择了省级之后,就去查找省下面的市···我也问过累死的问题···
[解决办法]
要么页面加载的时候,三个列表全部加载,然后根据后台Model,直接设置选中

或者 页面加载时,同步触发一下change

还有你要确保联动的ajax访问是同步的,而非异步方式
[解决办法]
之前做联动菜单绑定的时候 省份和城市就是一个表 父级ID 的形式
把你的model改造下 做个自定义的model。如你是要编辑的时候通俗点的ModelEdit
属性根据编辑需要自定义,城市那就定义一个省份和一个城市都为SelectList类型的属性,
然后再定义两个选中ID SelectedProvinceId、 SelectedCityId。
在属性访问器中写好该集合的获取方法,比如 var list=cityRespository.getCityByProvinceId(SelectedProvinceId);
这个SelectList和SelectListItem一样也有选中的参数重载。
每次刷新什么的,从数据源得到该数据的城市后相应的赋值到SelectedProvinceId、SelectedCityId就可以了。
然后页面赋值的使用用强类型页面,html元素标签的name名字和你的自定义类的属性保持一直,提交的时候可以直接用类来获取了。
建议使用@Html.DropDownList("SelectedProvinceId",list,new{@onchange="function()"})
提交的ActionResult(ModelEdit model)
model.SelectedProvinceId 就是你页面选的ID。
这是小弟之前实现的方式,总体思路就是这样,如有不足和错误之处请见谅。

热点排行