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


    <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);
            //}
        }
    }

  • 相关阅读:
    PAT 甲级 1004 Counting Leaves
    C#列的一些操作
    EXT.NET 一些用法
    ext.net 所有版本
    鱼线拉力值
    CRM 总是弹出登录窗口
    台钓线组及各种绑法
    windows server 2012 r2 安装IIS失败
    [iOS]UITableView刷新
    [Linux]APUE读书笔记: 文件和目录
  • 原文地址:https://www.cnblogs.com/chenying99/p/2365448.html
Copyright © 2020-2023  润新知