Asp.net綁定帶層次下拉框(select控件)


1、效果圖

2、數據庫中表數據結構

 

3、前台頁面

<select id="pid" runat="server" style="width: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(篩選條件,排序);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM