• Asp.net绑定带层次下拉框(select控件)


    1、效果图

    2、数据库中表数据结构

    3、前台页面

    <select id="pid" runat="server" style="160px;" >
       <option value="0" data="|0|">不选父级类</option>
    </select>

    4、后台代码 

    using System;
    using System.Data;
    using System.Web.UI.WebControls;
     //带层次的绑定下拉框(select控件)        
     BindDropDownList(0, "┗━");
        /// <summary>
        /// 带层次的绑定下拉框
        /// </summary>
        /// <param name="pItemId">父类编号</param>
        /// <param name="levelStr">层次样式</param>   
        protected void BindDropDownList(int pItemId, string levelStr)
        {
            //获取新闻类别列表
            DataTable dt = Express.BLL.NewsCategory.GetDataSet().Tables[0];
            //判断是否是父类,更改其层级值
            if (pItemId != 0)
            {
                levelStr += string.IsNullOrEmpty(levelStr) ? "┗━" : "┻━";            
            }
            //遍历控件的列表控件中的数据项
            foreach (DataRow dr in dt.Select("ParentId=" + pItemId))
            {
                //初始化列表控件中的数据项
                ListItem li = new ListItem();
                //设置数据项显示的文本
                li.Text = levelStr + dr["ItemName"].ToString();
                //设置数据项关联的值
                li.Value = dr["Id"].ToString();
                //将数据项追加到控件中
                this.pid.Items.Add(li);
                //遍历列表控件中的子类数据项
                BindDropDownList(Convert.ToInt32(li.Value), levelStr);
            }
        }

    5、数据库部分

            /// <summary>
            /// 获取所有名称不为空的类别
            /// </summary>
            /// <returns></returns>
            public DataSet GetDataSet()
            {
                string sql = "select * from NewsCategory where ItemName<>'' order by sortvalue ";
                return SqlHelper.ExecuteDataSet(ConnString.connReadonly, CommandType.Text, sql, null);
            }

     备注:查看网页源代码

     <select name="pid" id="pid">
        <option value="0">不选父级类</option>
        <option value="31">┗━新闻中心</option>
        <option value="51">┗━┻━企业快讯</option>
        <option value="52">┗━┻━企业公告</option>
        <option value="53">┗━┻━行业动态</option>
        <option value="54">┗━关于盟友捌捌</option>
        <option value="55">┗━┻━企业概况</option>
        <option value="56">┗━┻━企业文化</option>
        <option value="57">┗━┻━企业发展</option>
        <option value="58">┗━┻━联系我们</option>
    </select>

    涉及的知识点:

    (1)将数据库中的数据绑定到下拉框

     <select id="pid" runat="server">
        <option value="0" data="|0|">不选父级类</option>
     </select>

    方法一:

      DataSet ds = Express.BLL.AdminLeft.GetDataSet();
      foreach (DataRow dr in ds.Tables[0].Rows)
      {
         pid.Items.Add(new ListItem(dr["ItemName"].ToString(), dr["Id"].ToString()));
      }

    备注:

    ListItem引用空间:System.Web.UI.WebControls;

    ListItem(string text,string value);//text指在 ListItem 中显示的文本;value指ListItem 的

    方法二:

        pid.DataSource = dt;//设置控件的数据源
        pid.DataTextField = "ItemName"; //设置数据项显示的文本
        pid.DataValueField = "Id";//设置数据项关联的值
        pid.DataBind();//将数据绑定到控件

    (2)【DataTable.Select方法】返回值:DataRow对象数组

    dt.Select(筛选条件);

    dt.Select();

           

    dt.Select(筛选条件,排序);

  • 相关阅读:
    分享一个文字转成语音的工具,视频配音神器
    生手linux服务器维护常用命令记录
    信不信?各种红包App最后都会整合游戏!App+游戏的变现模式分析
    一个玩游戏的失足青年,转行做游戏开发到教育的痛苦挣扎过程(4)
    免费送!CocosCreator 6.1超级大礼包!
    一个玩游戏的失足青年,转行做游戏开发到教育的痛苦挣扎过程(3)
    【激励视频组件】零编程,即拖即用,妈妈再也不用担心小游戏 SDK 接入了!
    惊天大案!80多款游戏源码被非法倒卖交换!波及数千余人涉案!
    小游戏开发运营挣钱模型之—游戏调优篇(1)
    有个事正在悄然发生,估计谁都无法逆转!只能积极拥抱
  • 原文地址:https://www.cnblogs.com/haozhenjie819/p/3907249.html
Copyright © 2020-2023  润新知