• 为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);
    }

  • 相关阅读:
    好用的python项目
    数据分析项目-金融行业案例
    pandas数据分析实例--以电票数据为例
    人工智能学习
    期权学习
    基于python的期权交易策略分析
    join , left join, inner join
    关于Noise and Error主题的一些小知识
    机器学习真的可以起作用吗?(3)(以二维PLA为例)
    机器学习真的可以起作用吗?(2)(以二维PLA算法为例)
  • 原文地址:https://www.cnblogs.com/top5/p/1556159.html
Copyright © 2020-2023  润新知