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(""))
{
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("");
}
}

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>

效果如下:

ASP.NET MVC Select无限级分类选择下拉框的更多相关文章

  1. Vue.js中使用select选择下拉框

    在Vue.js中使用select选择下拉框有两种方法: 第一种: Add.html: <select v-model="sysNotice.noticeType" id=&q ...

  2. selenium select 选择下拉框

    实战百度首页设置,浏览偏好设置. 打开首页,在非登录的情况下,查看分析页面元素,我们可以看到,我们首先要点击的是设置, 接着点击,搜索设置, 然后select选择下拉框. select_by_inde ...

  3. 【selenium】基于python语言,如何用select选择下拉框

    在项目测试中遇到了下拉框选择的控件,来总结下如何使用select选择下拉框: 下图是Select类的初始化描述,意思是,给定元素是得是select类型,不是就抛异常.接下来给了例子:要操作这个sele ...

  4. MVC 中的@Html.DropDownList下拉框的使用

    MVC 中的下拉框 实现方式,下面为大家介绍一个我自己认为比较好用的实现方式,而二话不说直接上代码: 第一步: 后台代码 //公共的方法 //在每次需要展示下拉框的时候,需要调用一下这个方法 [数据源 ...

  5. botot framework选择下拉框

    1,下拉框不能输入文字,如图: 方法: select from list    id=xxx   要选择的数据 2.下拉框可输入文字,如图: 方法: click element   di=xxx   ...

  6. Selenium_使用Select类对象处理下拉框(15)

    select标签的下拉框可以使用selenium的 Select模拟下拉框选择操作. Select需要导入才能使用,导入路径如下 from selenium.webdriver.support.ui ...

  7. 高仿QQ即时聊天软件开发系列之三登录窗口用户选择下拉框

    上一篇高仿QQ即时聊天软件开发系列之二登录窗口界面写了一个大概的布局和原理 这一篇详细说下拉框的实现原理 先上最终效果图 一开始其实只是想给下拉框加一个placeholder效果,让下拉框在未选择未输 ...

  8. Combo Select – jQuery可搜索下拉框插件

    今天用到另一款jq插件..插件就是无脑,,引入相关文件,开始撸吧 引入相关文件: <link href="~/Scripts/combo-select/combo.select.css ...

  9. js中给easyUI年份,月份选择下拉框赋值

    sp中定义 js中初始化 //年度下拉框初始化 $("#yearChoose").combobox({    valueField:'year',     textField:'y ...

随机推荐

  1. Linux动态库搜索路径的技巧

    众所周知,Linux动态库的默认搜索路径是/lib和/usr/lib.动态库被创建后,一般都复制到这两个目录中.当程序执行时需要某动态库,并且该动态库还未加载到内存中,则系统会自动到这两个默认搜索路径 ...

  2. Lenna图-莱娜·瑟德贝里

    莱娜·瑟德贝里(瑞典文:Lena Soderberg),1951年3月31日出生于瑞典,在1972年11月期的<花花公子>杂志中,她化名为莱娜·舍布洛姆,成为了当期的玩伴女郎. 她的中间折 ...

  3. 12 个免费在线的 Web 网站性能测试工具

    https://www.oschina.net/news/21033/12-free-online-tools-for-website-testing

  4. pycharm 变量批量重命名

    Ctrl + R 替换 Ctrl + Shift + F 全局查找 Ctrl + Shift + R 全局替换

  5. servlet ; basepath ; sendredirected ;

    Eclipse 新建 jsp页面里自动生成以下代码: <%String path = request.getContextPath();String basePath = request.get ...

  6. JavaScript学习笔记-构造函数

    什么是构造函数 简单说构造函数是类函数,函数名与类名完全相同,且无返回值.构造函数是类的一个特殊成员函数. JavaScript构造函数 * 在JavaScript的世界里没有类的概念,JavaScr ...

  7. HDU 1695 GCD (欧拉函数,容斥原理)

    GCD Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submis ...

  8. Editplus配置Monokai页面风格

    1.找到EditPlus的配置文件editplus_u.ini,用以下代码替换 [Options] Placement=2C00000002000000030000000083FFFF0083FFFF ...

  9. Android WebView 加载网页

    通过Android 中 WebView 控件加载HTML5 页面,这是实现Android 混合开发的基础. 选择加载的网页可以是本地,也可用使远程的.需要添加访问互联网的权限:<uses-per ...

  10. spring 攻略

    1.5 指定Bean引用 为了Bean之间相互访问,在Bean配置文件中通过<ref>元素为Bean属性或构造程序参数指定Bean引用. <property name="p ...