none
【ASP.NET】数据库查询出来的数据在下拉列表中不能显示颜色 RRS feed

  • 问题

  • 数据库中的数据为 <font color='red'>ddd</font> 现在的问题是,绑定下拉列表框之后,原来想数据中的html标签会自动转换为对应的效果,可万万没有想到,像上面的数据竟然原模原样的显示出来,没有达到预想效果。然后我试图运用 Server.HtmlDecode解码,也不行。 我现在的解决方法是在数据库中又建了一个字段,用来存放颜色,然后组合显示。但感觉这样没有一开始那样方便,问问大伙上面的问题,我应该如何能解决呢?谢谢!
    2010年6月21日 7:05

答案

  • 你好,

    上面的版主说了option里面只能是text,这个你在visual studio里面就可以发现,当你那样做的时候,它会提示你“element '<font>' can't be nested in '<option>'”.

    所以最好不要使用这种不规范的做法,而改用通过属性添加style。


    Microsoft Online Community Support
    • 已标记为答案 jinwb1982 2010年6月23日 4:25
    2010年6月23日 1:53

全部回复

  • 你好 这不是绑定数据的缘故 而是select不支持颜色这些的 option的下级是text
    I see you~http://hi.baidu.com/1987raymondMy Blog~~~
    2010年6月21日 9:11
    版主
  • 你好 这不是绑定数据的缘故 而是select不支持颜色这些的 option的下级是text
    I see you~ http://hi.baidu.com/1987raymondMy Blog~~~

    不是的,我做了一下测试,虽然表中的数据为<font color='red'>ddd</font> 当我查看源代码的时候,却惊奇的发现,select标签之间的数据"<"  " >" 符号换成了如&lt这样的  所以我试图用 Server.HtmlDecode 进行解码,最后显示的还是<font color='red'>ddd</font> 。又和数据库中的数据一样了,但我自己手写代码:如

    <select id="s1" >
    <option value="9"><font color='red'>ddd</font></option>
    </select>

     

    去发现可以为其中的ddd 改变颜色为红色的,请问这是为什么?

    2010年6月21日 11:26
  • 这样的话,你可以写个方法把&lt替换为<

    public static string NoHTML(string Htmlstring)
            {          
              Htmlstring=   Htmlstring.Replace("&lt;", "<");
              Htmlstring = Htmlstring.Replace("&gt;", ">");
              Htmlstring = Htmlstring.Replace("\r\n", "<br/>");
                return Htmlstring;
            }


    努力+方法=成功
    2010年6月21日 16:35
  • 这样的话,你可以写个方法把&lt替换为<

    public static string NoHTML(string Htmlstring)
            {          
              Htmlstring=   Htmlstring.Replace("&lt;", "<");
              Htmlstring = Htmlstring.Replace("&gt;", ">");
              Htmlstring = Htmlstring.Replace("\r\n", "<br/>");
                return Htmlstring;
            }


    努力+方法=成功

    不是这样的,我截个图给你看看就知道了

    代码是这样的:

    SqlDataReader sdr = OperateDB.GetSqlDataReader("select * from Sk_Department where parentID=1 order by sorder asc");//只选择parentID为1的数据
                string color=string.Empty;
                while (sdr.Read())
                {
                    if (sdr["color"].ToString() != "")             
                        color = sdr["color"].ToString(); //获取颜色
                    else
                        color = "";


                    this.department.Items.Add(new ListItem("<font color='" + color + "'>" + sdr["name"].ToString() + "</font>", sdr["id"].ToString()));
                }
                sdr.Close();

     

    数据库中的数据如下:

     

    网页生成的原文件如下:

     

    实现的效果如下:

     

    用替换不行,因为数据库中根本没有要替换的元素,&lt;这样的元素是加载网页自动生成的。

    2010年6月22日 1:27
  • 你好,

    换种方法试试:

    ListItem li1 = new ListItem();
       li1.Text = "口腔部";
       li1.Attributes.Add("style","color:#0000ff;");
    
       ListItem li2 = new ListItem();
       li2.Text = "美容部";
       li2.Attributes.Add("style", "color:#d2691e;");
       this.DropDownList1.Items.Add(li1);
       this.DropDownList1.Items.Add(li2);

    Microsoft Online Community Support
    2010年6月22日 7:17
  • 你好,

    换种方法试试:

    ListItem li1 = new
     ListItem();
    li1.Text = "口腔部" ;
    li1.Attributes.Add("style" ,"color:#0000ff;" );

    ListItem li2 = new ListItem();
    li2.Text = "美容部" ;
    li2.Attributes.Add("style" , "color:#d2691e;" );
    this .DropDownList1.Items.Add(li1);
    this .DropDownList1.Items.Add(li2);

    Microsoft Online Community Support
    是的,我现在用的就是上述方法。但我不明白什么原因能造成我之前说的问题
    2010年6月23日 1:08
  • 你好,

    上面的版主说了option里面只能是text,这个你在visual studio里面就可以发现,当你那样做的时候,它会提示你“element '<font>' can't be nested in '<option>'”.

    所以最好不要使用这种不规范的做法,而改用通过属性添加style。


    Microsoft Online Community Support
    • 已标记为答案 jinwb1982 2010年6月23日 4:25
    2010年6月23日 1:53
  • 你好,

    上面的版主说了option里面只能是text,这个你在visual studio里面就可以发现,当你那样做的时候,它会提示你“element '<font>' can't be nested in '<option>'”.

    所以最好不要使用这种不规范的做法,而改用通过属性添加style。


    Microsoft Online Community Support
    好的,明白
    • 已标记为答案 jinwb1982 2010年6月23日 4:25
    • 取消答案标记 jinwb1982 2010年6月23日 4:25
    2010年6月23日 4:25