2009-07-12 2 views
0

Можно ли разбить ярлык на новые строки, если содержимое превышает ширину ярлыка? (как в многострочном текстовом поле) Я знаю, что есть слово wrap css, но это не кросс-браузер.Строка прерывания в метке каждые X символов

Или мне нужно разбить его вручную, вставив <br> тег каждые х символов, как я это делаю сейчас (может быть, есть лучший способ):

string content = HttpUtility.HtmlEncode(content); 
int len = content.Length; 
for (int i = 80; i < len; i = i + 80) 
{      
    content = content.Insert(i, "<br>");      
} 
return content; 

ответ

0

Я не думаю, что это свойство ap: label, чтобы делать то, что вам нужно. Но вы делаете вообще то, что я делаю, когда мне нужно что-то подобное!

Если вы можете прикрепить метку внутри HTML-элемента, который вы можете установить ширину, то CSS будет заботиться о слове упаковки для вас, если ваш текст состоит из текста с пробелами:

<div style="width:80px"><asp:label id="lbl" runat="server" 
text="abcdefghij klmnopqrstuvwzyz1234567890 
abcdefghijklmnopqrstuvwzyz12345678 
90abcdefghijklmnopqrstuvwzyz1234567890ab 
cdefghijklmnopqrstuvwzyz123 
4567890abcdefghijklmnopqrstu 
vwzyz1234567890abcdefghijkl 
mnopqrstuvwzyz1234567890abcdefgh 
ijklmnopqrstuvwzyz1234567890" /></div> 

Но иногда, если в тексте нет ничего, что браузер обнаруживает как слово-перерыв, он просто выплюнет всю строку в одной огромной строке, которая нарушит ваш дизайн.

Так что я обычно вручную разбиваю большие строки, если нужно, иначе я буду полагаться на CSS, чтобы сделать это для меня.

0

То, что совместимо с кросс-браузером, изменяет вашу метку на блок, тогда вам не нужно выполнять обработку на стороне сервера. Моя догадка заключается в том, что когда-либо выделяется, выделяется в <span />, поэтому ширина не работает.

попробовать это

span.mylablel { 
    display: block; 
    width: 100px; 
} 

надеюсь, что это помогает

+0

Я добавил этот стиль = "display: block; width: 100px;" к этикетке. не влияет. – 2009-07-12 16:45:25

+0

Можете ли вы опубликовать сгенерированный HTML. Трудно дать решение, когда вы не даете результат, который вызывает проблемы, и единственный код, который вы даете, - это вопрос, если вы должны сделать это по-другому. –

0

Там нет никакой собственности, что будет делать это на этикетке. Вместо того, чтобы использовать ярлык, почему бы не использовать TextBox и сделать его похожим на ярлык? Затем вы получите встроенную многострочную функциональность. Это было бы чистое решение и не требовало бы манипулирования кодом для выполнения разрывов строк.

Попробуйте использовать контроль текстовое поле со следующими заданными свойствами, возможно, это будет соответствовать вашим потребностям:

<asp:TextBox ID="txtFakeMultilineLabel" runat="server" BorderStyle="None" 
BorderWidth="0" Wrap="true" Rows="14" Width="300" ReadOnly="true" 
TextMode="MultiLine">text here or set from code-behind</asp:TextBox> 

Вы бы задать строки и ширину, чтобы контролировать нужный размер. Если содержимое пропущено мимо строк, появятся полосы прокрутки. Это может быть или не быть желательным, но это быстрое решение.

+0

Я не могу использовать текстовое поле becasue Я не хочу, чтобы курсор появлялся внутри текстового поля (ReadOnly = "true" не удаляет его), и я не хочу, чтобы отображалось контекстное меню правой кнопки мыши. – 2009-07-12 17:50:28

+0

Вы можете отключить курсор и контекстное меню, отключив текстовое поле. Недостатком этого является то, что текст не может быть выбран пользователем (например, для копирования/вставки). И вам нужно будет обновить цвета, чтобы обойти отключенный вид. Чтобы попробовать, добавьте следующие свойства: Enabled = "false" BackColor = "White" ForeColor = "Black" Как я уже сказал, это быстрое решение, и оно не очень гибкое, если вам нужно больше. –

0

Окончательный ответ:

Хорошо, теперь, что ваш вопрос стал более ясным для меня,

Я написал это для вас, это работает отлично:

<html xmlns="http://www.w3.org/1999/xhtml" > 
<head runat="server"> 
    <title></title> 
    <style type="text/css"> 

     .TextBox 
     { 
      width : 140px ; 
      display : block ; 
      border : solid 1px black ; 
      cursor :default ;   
      height : 500px ; 
      overflow:hidden ; 
     }   
    </style> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <asp:TextBox ID="TextBox1" runat="server" CssClass="TextBox" ReadOnly="true" 

     Text="  gfsgtgvyhhtthbjyudrjedgjdgjwmedgjmwegdjmewgdj wedjwegjmwgejwegxjw egxjegxjmegxjejmxgewjgx 
     dfsdfsgm;lsdgfml;dgmdl; gmsdl;gsmgklngjhnghl;kfl;dkgdgh d,fhklhkldfmgdklfhndfjhdjkfjhndlkfhld 
     dfjgsdklgnsldkgnsdgkn sldgknsdkgnsdlgksndglksdnglksdn gnsdglksndgsldgn sdlgnsdkglsdgn" 
     TextMode="MultiLine" ></asp:TextBox> 
    </form> 
</body> 
</html> 

Наслаждайтесь;)

+0

Если я просто установил «width: 100px», это не влияет, если строка длинная строка без пробелов. – 2009-07-12 20:21:13

+0

Посмотрите обновленную версию – Sypress

Смежные вопросы