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. css中div高度自适应

    高度的自适应(父div高度随子div的高度改变而改变) 1.如果父div不定义height.子div均为标准流的时候,父div的height随内容的变化而变化,实现父div高度随子div的高度改变而改 ...

  2. CNN 各layer汇总

    Flattening:类型为:Flatten 基于某个axis进行偏平的意思,如 axis = 1 ,fattens an input of shape n * c * h * w to a simp ...

  3. Bouncy Castle Crypto API c# port

    Bouncy Castle 是一种用于 Java 平台的开放源码的轻量级密码术包.它支持大量的密码术算法,并提供 JCE 1.2.1 的实现.现在有了C#的版本.下面是网站上的介绍 This port ...

  4. 我的JavaScript笔记--数据类型,预编译,闭包

     在我们js中存储数据的空间可以分为两种,堆内存和栈内存 堆内存:我们定义的那些引用数据类型的数据都会在堆内存中开辟空间. 栈内存:我们运行的js代码还有我们定义的基本数据类型,都直接在栈内存中存储 ...

  5. bzoj2656

    题目链接:传送门 题目大意:已知 a0=0:a1=1: n为偶数 an=a(n/2):n为基数 an=a(n/2)+a(n/2+1): 题目思路:因为n过大,所以要用java高精度,还有最多20组数据 ...

  6. 用angular做的模糊搜索

    今天大家来试一试用angular做一下简单的搜索功能吧: 首先我们需要写html的部分,我们需要设置几个条件,比如按什么来排序,按升序还是降序搜索,和一个文本框来设置模糊搜索: <nav> ...

  7. matplotlib图像中文乱码(python3.6)

    方法一:(在代码中添加如下代码) import matplotlib #指定默认字体 matplotlib.rcParams['font.sans-serif'] = ['SimHei'] matpl ...

  8. 基于kubernetes集群的Vitess最佳实践

    概要 本文主要说明基于kubernetes集群部署并使用Vitess; 本文假定用户已经具备了kubernetes集群使用环境,如果不具备请先参阅基于minikube的kubernetes集群搭建, ...

  9. delphi,数据类型,字符、浮点、整数、数组

    字符型:string 浮点型:real 整数:integer DELPHI的浮点数声明不是用float,而是用real(8个字节),single(8个字节,单精度浮点),double(16个字节,双精 ...

  10. Powershell Function Get-PendingReboot

    获取系统中Restart Pending的计算机 $servers=get-content D:\serverlist.txt Get-PendingReboot -ComputerName $ser ...