2016-08-05 3 views
0

Я строю таблицу HTML из списка набранных C#. До сих пор создание таблицы отлично работает, но теперь мне нужно добавить стиль к одному из тегов <TD> внутри строки, которая строит таблицу.Как добавить определение стиля в <TD> тег внутри строки с помощью StringBuilder?

То, что я попробовал, просто добавляет определение стиля к TD при добавлении к строке с использованием построителя строк. Но я получаю синтаксические ошибки, используя определение стиля.

Вопрос: Как вы можете добавить определение стиля для тега внутри строки?

создать тело таблицы с помощью строки Builder экземпляра строки:

StringBuilder releaseStatusTableBodyData = new StringBuilder(); 

Затем добавьте строку и седловины в строку таблицы. Удаление двойных кавычек из стиля не устранило ошибка синтаксиса показана либо:

 foreach(var row in releaseStatusList) 
     { 

      //for each record create a new table row 
      releaseStatusTableBodyData.Append("<TR>\n"); 


      releaseStatusTableBodyData.Append("<TD style=""bgcolor: green;"">"); //added the style to the TD here, but get syntax error on the style telling me) is required. 
      releaseStatusTableBodyData.Append(row.Days_Owned); 
      releaseStatusTableBodyData.Append("</TD>"); 



      releaseStatusTableBodyData.Append("</TR>\n"); //end of row 

     } 

ответ

1

Поместите дословную буквальным (@) в начале вашей строки.

releaseStatusTableBodyData.Append(@"<TD style=""background-color: green;"">"); 
           ^^^ 

Из некоторых фонов, добавляющих строки escape-строки внутри строки, может показаться проще, но для меня это намного легче читать.

Вместо этого, возможно, стоит попробовать HtmlTextWriter. Это по сути делает то же самое с небольшой помощью, характерной для HTML.

string html; 
using (var sw = new StringWriter()) 
using (var hw = new HtmlTextWriter(sw)) 
{ 
    hw.RenderBeginTag(HtmlTextWriterTag.Tr); 
    hw.AddStyleAttribute(HtmlTextWriterStyle.BackgroundColor, "green"); 
    hw.RenderBeginTag(HtmlTextWriterTag.Td); 
    hw.RenderEndTag(); 
    hw.RenderEndTag(); 
    html = sw.ToString(); 
} 

Что немного странно, что вы должны добавить атрибут стиля перед тем визуализации Td тега.

Хорошо, что вы можете работать с множеством предопределенных констант для имен тегов и стилей. И это намного проще, если вам нужна условная логика.

hw.RenderBeginTag(HtmlTextWriterTag.Tr); 
if(makeThisGreen) 
    hw.AddStyleAttribute(HtmlTextWriterStyle.BackgroundColor, "green"); 
if(makeThisBold) 
    hw.AddStyleAttribute(HtmlTextWriterStyle.FontWeight, "bold"); 
hw.RenderBeginTag(HtmlTextWriterTag.Td); 
hw.RenderEndTag(); 
hw.RenderEndTag(); 

С StringBuilder когда вы получаете второе условие вы должны проверить, является ли вы уже начали атрибут style, чтобы убедиться, что вы не создали его дважды. Затем вам нужно будет проверить, было ли одно из этих условий истинным, чтобы вы знали, добавить ли конечную цитату к атрибуту style. (Или вы можете создать метод, чтобы сделать все это для вас.) Но эта работа уже выполнена в классе HtmlTextWriter.

Вы также можете использовать WriteBeginTag(string) и WriteEndTag(string), которые дают вам более четкий контроль над написанием ваших тегов.