.net mvc DropDownList 下拉框_无限级分类

1、数据库设计:

id:int

name:string

pid:int  //父级id(顶级菜单默认为0)

2、Controller:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using MvcTest.Models;

namespace MvcTest.Controllers
{
    [ValidateInput(false)]
    public class HomeController : Controller
    {
        private testEntities db = new testEntities();

        [LoginFilter]
        public ActionResult Index()
        {
            BindDropDownList();
            return View();
        }

        //绑定顶级分类
        private void BindDropDownList()
        {
            List<SelectListItem> select1 = new List<SelectListItem>();
            var one = from c in db.Categories where c.pId == 0 select c;
            foreach (var b in one)
            {
                string name = b.name; string id = b.id.ToString();
                select1.Add(new SelectListItem
                {
                    Text = "> " + name,
                    Value = id
                });
                int sonparentpid = int.Parse(id);
                string blank = " ┠ ";
                //递归子分类方法
                BindNode(sonparentid, blank, select1);
            }
            ViewBag.caList = new SelectList(select1, "Value", "Text");
        }

        //绑定子分类
        private void BindNode(int pid, string blank, List<SelectListItem> select1)
        {
            var two = db.Categories.Where(c => c.pId == pid);
            foreach (var c in two)
            {
                string zname = blank + c.name;
                string zid = c.id.ToString();
                select1.Add(new SelectListItem
                {
                    Text = zname,
                    Value = zid
                });
                int sonparentid = int.Parse(zid);
                string blank2 = blank + "━";
                BindNode(sonparentid, blank2, select1);
            }
        }
    }
}

3、view:

@Html.DropDownListFor(a => a.caId, ViewBag.caList as IEnumerable<SelectListItem>,"---请选择---" , new { style = "width: 120px;" })

时间: 2024-10-15 13:05:30

.net mvc DropDownList 下拉框_无限级分类的相关文章

GridView 中绑定DropDownList ,下拉框默认选中Label的值

在GridView中,我们 有时候要绑定值. 前台绑定的代码可以这样 <asp:TemplateField HeaderText="当前状态" ItemStyle-HorizontalAlign="Center"> <EditItemTemplate> <asp:DropDownList ID="dStatus" DataSource='<%#BindStatus()%>' DataTextField=&

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

MVC 中的下拉框 实现方式,下面为大家介绍一个我自己认为比较好用的实现方式,而二话不说直接上代码: 第一步: 后台代码 //公共的方法 //在每次需要展示下拉框的时候,需要调用一下这个方法 [数据源是DB数据库] private void _ProductExtensions( BtDbContext _ctx ) { #region 商品分类 List<SelectListItem> listProductTypes = new List<SelectListItem>();

MVC 实现下拉框

MVC动态实现下拉框的方式有很多种,但是方便快捷的却是很少,现在记录一种常用的下拉框实现方式: 1.先看看视图代码是怎么写的 <div class="form-group col-xs-12 col-sm-8 col-md-8"> <label class="control-label">这是一个下拉框:</label> @Html.DropDownList("selectRoleId", ViewData[&

自定义控件基础01_菜单轮__viewPager_下拉框_自定义开关

1,自定义控件分类: 1.1组合控件:由安卓中原生的控件组合起来,配合动画达成的效果 1.2自定义控件 1.3组合控件案例演示: 案例:优酷菜单demo 三层圆环,按下menu键会通过动画效果消失在界面,点击小房子和中层圆环,最外层圆环消失 ①布局实现: 三层相对布局相互叠加(因为图片背景是透明的,所以可以叠加显示) 由于三个布局是叠加显示的,所以这个菜单选项要使用一个占据焦点比较强的(不然有可能点击不到)ImageButton控件 控件上background=”@android:color/t

asp.net mvc中 下拉框联动效果 添加方法

首页查询第一级菜单的所有集合List,取到第一级的第一个下标,根据第一个下标查询第二级集合. 这样在页面就显示了 两个下拉select菜单,默认是从数据库查询的是第一个. 根据下拉框选择相应的第二级数据,在页面上面需要写一个ajax提交方法, $(function () { $('#sltCampus').on('change', function() { $.ajax({ type: "POST", url: '/Member/GetRestaurant', data: { camp

c# DropDownList 下拉框实现树形导航

ddlbig.Items.Add(new ListItem("新闻分类", "0")); newclass(pub.getpower(), "146", ""); public  void newclass(DataTable dtMenu, string parentNo,string str) { string expression = "parentid= " + parentNo; DataRow[

selenium webdriver学习(八)------------如何操作select下拉框(转)

selenium webdriver学习(八)------------如何操作select下拉框 博客分类: Selenium-webdriver 下面我们来看一下selenium webdriver是如何来处理select下拉框的,以http://passport.51.com/reg2.5p这个页面为例.这个页面中有4个下拉框,下面演示4种选中下拉框选项的方法.select处理比较简单,直接看代码吧:) Java代码   import org.openqa.selenium.By; impo

mvc SelectList 给下拉框 @Html.DropDownList绑定值

后台代码: public class DropController : Controller { // GET: Drop public ActionResult Index() { List<Province> list = new List<Province> { new Province{ Id=1,name="山西省"}, new Province{ Id=1,name="广东省"}, new Province{ Id=1,name=

.NET下拉框DropDownList层级实现

.NET下拉框DropDownList层级实现 这也算是第一篇博客吧,技术比较菜,写得不好,希望各位博友见谅哈,多多提提意见. 今天做电商网站新闻添加的时候,下拉框选择新闻类别觉得太长,又无法定位其准确级别,让人甚是苦恼,于是想做一个层级的下拉框,刚开始的时候想到了用递归树去实现,之前写过递归树,觉得应该可以,便试了一下,递归树代码如下: 1 #region 递归添加下拉框的值 参数ParentID为树的最大父结点 2 public void AddTree(int ParentID, List