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. openldap+php-ldap操作

    一.基础知识首先,如果您对LDAP 不认识,建议先看看[原]LDAP服务介绍一文.本文以Linux 下常用的OpenLDAP为例说明.LDAP 以数方式存放数据,每个节点可存放属性或作为下面节点的父节 ...

  2. 对Linux命令进一步学习vim(二)

    今天,进一步学习Linux相关的命令,可能会有重复的地方,但学习本来就是不断重复的过程.故作小记! 1.安装了:vim  ,,,一款Linux爱好者经常用到的ide sudo apt-get inst ...

  3. (转)Apache Mina网络框架

    转自1:整体结构分析 http://www.cnblogs.com/xuekyo/archive/2013/03/06/2945826.html 转自2:详细源码分析 http://www.cnblo ...

  4. 【PyQt】插入排序算法

    # coding=utf-8 import sys from PyQt4.QtGui import * from PyQt4.QtCore import * class MainWindow(QMai ...

  5. .NET程序调试技巧(一):快速定位异常的一些方法

    作为一个程序员,解BUG是我们工作中常做的工作,甚至可以说解决问题能力是一个人工作能力的重要体现.因为这体现了一个程序员的技术水平.技术深度.经验等等. 那么在我们解决BUG的过程中,定位问题是非常重 ...

  6. sizeWithFont:方法使用明细

    个人总结: Computing Metrics for a Single Line of Text– sizeWithFont: 同下面,换行方式默认取NSLineBreakByWordWrappin ...

  7. poj3372

    Candy Distribution Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 5868   Accepted: 327 ...

  8. 【BZOJ3207】花神的嘲讽计划Ⅰ Hash+主席树

    [BZOJ3207]花神的嘲讽计划Ⅰ Description 背景 花神是神,一大癖好就是嘲讽大J,举例如下: “哎你傻不傻的![hqz:大笨J]” “这道题又被J屎过了!!” “J这程序怎么跑这么快 ...

  9. 在Web工程中,普通Java类如何读文件

    我们在以前讨论过在Web工程不能采用Java工程原先的读取方式,即创建一个文件流(FileInputStream)并给出一个文件目录(从src开始找一直找到你要读取文件的目录),这种的方式是不可行的. ...

  10. 【Python之路】第十七篇--Ajax全套

    概述 1.传统的Web应用 一个简单操作需要重新加载全局数据 2.AJAX AJAX,Asynchronous JavaScript and XML (异步的JavaScript和XML),一种创建交 ...