zoukankan      html  css  js  c++  java
  • 为DropDownList 添加optgroup分组以及为ListItem 加式样

    先写一个类库文件(对原文件做了修改),如下:
    /// <summary>
        /// 冯东耀修改于2008-11-21
        /// </summary>
        public class NewDropDownList : DropDownList
        {
            //构造函数
            public NewDropDownList(DataTable dt)
            {
                ListItem item = new ListItem();
                foreach (DataRow row in dt.Rows)
                {
                    item.Value = row[0].ToString();
                    item.Text = row[1].ToString();
                    if (row[3].ToString() == "0")
                        item.Attributes.Add("optgroup", item.Text);
                    Items.Add(item);
                }
            }

            //重写方法
            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);
                //writer.WriteAttribute("style", "color:#7395c1", 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();
            }

        }
    将它保存为一个类库文件。然后新建一个aspx页面,前台添加一个Panel,后台代码要添加上面类库文件的命名空间。
    aspx代码
        <form id="form1" runat="server">
            <asp:Panel ID="Panel1" runat="server" Height="50px" Width="125px">
            </asp:Panel>
        </form>
    aspx.cs代码
        protected void Page_Load(object sender, EventArgs e)
        {
            DataTable dt = RK.Dal.ArticleMgr.GetFSCategory();
    //首先得到一个dt,数据要求,
    //第一列为DropDownList选项的值,
    //第二列为DropDownList选项的显示文本,
    //第三列是父级id,如果为0则表示是顶级;
            NewDropDownList ddl = new NewDropDownList(dt);
            ddl.ID = "DropClassId";
            this.Panel1.Controls.Add(ddl);
    }

  • 相关阅读:
    Java Web(5) Spring 下使用Junit4 单元测试
    聊聊单元测试(三)——Spring Test+JUnit完美组合
    浅谈ELK日志分析平台
    ELK 实现 Java 分布式系统日志分析架构
    ELK(ElasticSearch, Logstash, Kibana)搭建实时日志分析平台
    开源分布式搜索平台ELK(Elasticsearch+Logstash+Kibana)入门学习资源索引
    自动补全下拉框(可输入匹配的下拉框)
    这是一篇满载真诚的微信小程序开发干货
    微服务化的多组件项目,跨地域、分布式版本管理和发布方式
    解放双手,发掘更大的价值:智能化运维
  • 原文地址:https://www.cnblogs.com/top5/p/1556159.html
Copyright © 2011-2022 走看看