SmartDropDownList绑定类型及类型下的内容

it2022-05-05  129

<asp:Panel ID="Panel1" runat="server"></asp:Panel>

if (!IsPostBack) { }                        IList<Accounts_Duty> adlist = new Accounts_DutyBLL().GetALLItems();            SmartDropDownList sddl = new SmartDropDownList();            sddl.AutoPostBack = true;            sddl.ID = "sddlControl";            sddl.Items.Add(new ListItem("请选择..", ""));            //sddl.Attributes.Add("valid", "required");            //sddl.Attributes.Add("errmsg", "请选择套系类型!");            ListItem li = new ListItem();            foreach (Accounts_Duty type in adlist)            {                li = new ListItem();                li.Attributes.Add("optgroup", type.DutyName);                List<Accounts_User> aulist = new Accounts_UserBLL().GetItemsByCondition(new List<string> { "DutyID," + type.ID + ",=" });                if (aulist.Count > 0)                {                    sddl.Items.Add(li);                    foreach (Accounts_User m in aulist)                    {                        li = new ListItem(m.TrueName, m.UserID.ToString());                        sddl.Items.Add(li);                    }                }            }            sddl.SelectedIndexChanged += new EventHandler(this.sddlControl_SelectedIndexChanged);

            Panel1.Controls.Add(sddl);

 protected void sddlControl_SelectedIndexChanged(object sender, EventArgs e)        {            SmartDropDownList sddl = (SmartDropDownList)this.FindControl("sddlControl");            //选中的值             string value = sddl.SelectedValue;                   }

using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI.WebControls;using System.Collections;using System.Web.UI;

namespace Demo.Web.General.Controls.Extension{    public class SmartDropDownList:DropDownList    {        //重写方法        protected override void RenderContents(HtmlTextWriter writer)        {            string optgroup;            ArrayList optOptionGroups = new ArrayList();            foreach (ListItem item in this.Items)            {                if (item.Attributes["optgroup"] == null)                {                    RenderListItem(item, writer);                }                else                {                    optgroup = item.Attributes["optgroup"];                    if (optOptionGroups.Contains(optgroup))                    {                        RenderListItem(item, writer);                    }                    else                    {                        if (optOptionGroups.Count > 0)                        {                            optgroupEndTag(writer);                        }                        optgroupBeginTag(optgroup, writer);                        optOptionGroups.Add(optgroup);                    }                }            }            if (optOptionGroups.Count > 0)            {                optgroupEndTag(writer);            }        }

        //option 简单添加style        private void RenderListItem(ListItem item, HtmlTextWriter writer)        {            writer.WriteBeginTag("option");            writer.WriteAttribute("value", item.Value, true);            if (item.Selected)            {                writer.WriteAttribute("selected", "selected", false);            }            foreach (string key in item.Attributes.Keys)            {                writer.WriteAttribute(key, item.Attributes[key]);            }            writer.Write(HtmlTextWriter.TagRightChar);            HttpUtility.HtmlEncode(item.Text, writer);            writer.WriteEndTag("option");            writer.WriteLine();        }

        //option 添加optgroup        private void optgroupBeginTag(string name, HtmlTextWriter writer)        {            writer.WriteBeginTag("optgroup");            writer.WriteAttribute("label", name);            writer.Write(HtmlTextWriter.TagRightChar);            writer.WriteLine();        }

        private void optgroupEndTag(HtmlTextWriter writer)        {            writer.WriteEndTag("optgroup");            writer.WriteLine();        }

        //调用(根据DropDownList 无限级分级一文修改这个构造函数)        //public NewDropDownList()        //{        //    ListItem li1 = new ListItem();        //    li1.Attributes.Add("optgroup", "dsfasf");        //    Items.Add(li1);        //    ListItem li2 = new ListItem();        //    Items.Add(li2);        //    ListItem li3 = new ListItem();        //    Items.Add(li3);        //}    }}

 

转载于:https://www.cnblogs.com/liyuxin/archive/2011/07/04/2097118.html


最新回复(0)