none
Web中Lable显示内容问题? RRS feed

  • 问题

  • 我的项目中有个模块是用户记录日常工作安排的内容,内容是用的TextBox控件输入的,在显示的时候用的是Lable显示,显示是要显示输入的格式的,所以我在Lable前加了<pre>,能显示输入时的格式的了

    但是问题就出来了,如果TextBox的某一行的字数太长的话,显示的时候就会把页面撑坏的(有时候整个页面都打乱了)

    请问各位老师有没有好的解决方法?

    谢谢!

    msdn
    2009年9月28日 2:34

答案

  • 你好!

    1 我上面提到了,可以使用 HTML 编辑器
    2 你可以使用 Div 来控制滚动条。

    知识改变命运,奋斗成就人生!
    2009年9月28日 2:35
    版主
  • 试下这个

    <textarea rows=1 name=s1 cols=30 onpropertychange="this.style.posHeight=this.scrollHeight"></textarea>

    然后指定字符换行
     public string CutStr(string str, int len)
        {
            string s = "";

            for (int i = 0; i < str.Length; i++)
            {
                int r = i % len;
                int last = (str.Length / len) * len;
                if (i != 0 && i <= last)
                {
                    if (r == 0)
                    {
                        s += str.Substring(i - len, len) + "<br/>";
                    }
                }
                else if (i > last)
                {
                    s += str.Substring(i - 1);
                    break;
                }

            }

            return s;
        }

    CutStr(Label1.Text,20);//字符到达20就换行

    2009年9月28日 2:44
  • 您好,3种方法,从易到难:

    1、<textarea name="" cols="" rows=""></textarea>

    2、<div /> 样式控制

    3、HTML编辑器,请参考:http://www.asp.net/AJAX/AjaxControlToolkit/Samples/HTMLEditor/HTMLEditor.aspx
    2009年9月28日 2:52
    版主
  • 后台输入的时候用在线文本编辑器,获取编辑器的value(通常都是有HTML格式的)存入数据库。
    然后在前台把数据绑定到Label上。


    做最好的自己
    2009年9月28日 5:48
  • txt = TextBox1.Text.Replace("\n\r","<br/>");
    txt = txt.Replace(" ","&nbsp;");
    Label1.Text = txt;


    【孟子E章】
    2009年9月28日 6:08
    版主

全部回复

  • 你好!

    1 WinForm 你可以考虑使用 RichTextBox, 如果你要保持目前的方式,可以将 Label 放到一个 Panel 中设置 Panel 的滚动条这样当 Label 超长时就会自动出来滚动条了。
    2 WebForm 你可以考虑使用像 FreeTextBox 这样的 HTML 在线编辑控件。



    知识改变命运,奋斗成就人生!
    2009年9月28日 1:25
    版主
  • 你好,我不是用WinForm 做的,是用WEB做的,该怎么实现呢?


    msdn
    2009年9月28日 2:32
  • 你好!

    1 我上面提到了,可以使用 HTML 编辑器
    2 你可以使用 Div 来控制滚动条。

    知识改变命运,奋斗成就人生!
    2009年9月28日 2:35
    版主
  • 试下这个

    <textarea rows=1 name=s1 cols=30 onpropertychange="this.style.posHeight=this.scrollHeight"></textarea>

    然后指定字符换行
     public string CutStr(string str, int len)
        {
            string s = "";

            for (int i = 0; i < str.Length; i++)
            {
                int r = i % len;
                int last = (str.Length / len) * len;
                if (i != 0 && i <= last)
                {
                    if (r == 0)
                    {
                        s += str.Substring(i - len, len) + "<br/>";
                    }
                }
                else if (i > last)
                {
                    s += str.Substring(i - 1);
                    break;
                }

            }

            return s;
        }

    CutStr(Label1.Text,20);//字符到达20就换行

    2009年9月28日 2:44
  • 您好,3种方法,从易到难:

    1、<textarea name="" cols="" rows=""></textarea>

    2、<div /> 样式控制

    3、HTML编辑器,请参考:http://www.asp.net/AJAX/AjaxControlToolkit/Samples/HTMLEditor/HTMLEditor.aspx
    2009年9月28日 2:52
    版主
  • 后台输入的时候用在线文本编辑器,获取编辑器的value(通常都是有HTML格式的)存入数据库。
    然后在前台把数据绑定到Label上。


    做最好的自己
    2009年9月28日 5:48
  • txt = TextBox1.Text.Replace("\n\r","<br/>");
    txt = txt.Replace(" ","&nbsp;");
    Label1.Text = txt;


    【孟子E章】
    2009年9月28日 6:08
    版主