你的位置:首页 > ASP.net教程

[ASP.net教程]ASP.NET MVC Select无限级分类选择下拉框


1:读取父级下的所有子类别 

*ViewBag.ParentItemList:不能与ParentId相同
 private void ParentDropDownList()    {      List<SAS.Model.BPMS_SysMenu> list = new List<SAS.Model.BPMS_SysMenu>();      StringBuilder strWhere = new StringBuilder();      List<SelectListItem> selectList = new List<SelectListItem>();      list = bll.GetModelList(strWhere.ToString());      foreach (var item in list)      {        if (item.ParentId.Equals("0"))        {          var parentList = bll.GetModelList(strWhere.ToString()).Where(d => d.ParentId == item.MenuId);          foreach (var plitem in parentList)          {            string parentName = plitem.FullName;            string parentId = plitem.MenuId.ToString();            selectList.Add(new SelectListItem            {              Text = "├-" + parentName,              Value = parentId            });            string pid = parentId;            string tag = " |- ";            ChildrenList(pid, tag, selectList);          }          ViewBag.ParentItemList = new SelectList(selectList, "Value", "Text");        }      }          }

2:遍历读取所有子类别下的孙类别。

   private void ChildrenList(string pid, string tag, List<SelectListItem> selectList)    {      StringBuilder strWhere = new StringBuilder();      var childrenList = bll.GetModelList(strWhere.ToString()).Where(d => d.ParentId == pid);      foreach (var clitem in childrenList)      {        string clname = tag + clitem.FullName;        string clid = clitem.MenuId.ToString();        selectList.Add(new SelectListItem        {          Text = clname,          Value = clid        });        string pid2 = clid;        string tag2 = tag + " -- ";        ChildrenList(pid2, tag2, selectList);      }    }

3:在需要的地方调用父类方法

public ActionResult Edit(string id)    {      ViewBag.ControllerName = RouteData.Values["controller"].ToString().ToLower();      var model = new SAS.Model.BPMS_SysMenu();      model=bll.GetModel(id);      if (model != null)      {        ParentDropDownList();          return View(model);      }      else      {        return View("404");      }    }

4:在页面调用

<div class="form-group">          <label class="col-md-3 control-label">上级模块</label>          <div class="col-md-4">    @Html.DropDownListFor(model => model.ParentId, ViewBag.ParentItemList as IEnumerable<SelectListItem>, new { @class = "form-control" })             <span class="help-block">            </span>          </div>        </div>

效果如下: