Я знаю, что для этого нужно быть более чистым, более сжатым способом ... но я никуда не пытаюсь найти Google. В принципе, у меня есть набор данных, которые мне нужно написать в таблицу HTML.Вывод значений в таблицу HTML
Стол приходит, ища что-то вроде этого (но гораздо больше):
DOB SDLW SDLY WTD LWTD Start Date: 03/06/2013 02/27/2013 03/07/2012 03/04/2013 02/25/2013 End Date: 03/06/2013 02/27/2013 Net Sales 5,661.47 4,876.82 16.1% 5,765.33 -1.8% 13,941.10 13,310.09 4.7% Gross Sales 6,499.14 5,549.94 17.1% 6,602.71 -1.6% 16,046.50 15,306.56 4.8% Guest Count 369.00 317.00 16.4% 392.00 -5.9% 920.00 872.00 5.5% Total Comps 187.29 102.46 82.8% 163.19 4.8% 499.74 455.82 9.6% Total Voids 56.25 51.05 10.2% 131.65 -57.3% 161.05 227.83 -29.3%
Побочный линии выпуска:
Первоначально я написал это с помощью HtmlTextWriter
, но, чтобы звонить AddAttribute()
за каждый <td>
сделал невероятное количество (шумный) код. Затем я переехал в обертках, так что я могу хотя бы уменьшить ячейку одной строки кода:
public string wrapAmntCell(Object input)
{
return "<td align=\"right\">" + string.Format("{0:n}", input) + " " + "</td>";
}
Что я не особо как до сих пор, но я по крайней мере, значительно улучшилось, когда я начал. Однако ...
Большая проблема картины:
Это я строй этих строк с помощью конкатенации строк значений, которые построены с + = заявлениями (пресмыкаться), что-то вроде этого:
string[] finalNet = new string[validSites.Count];
string[] finalGross = new string[validSites.Count];
string[] finalGC = new string[validSites.Count];
string[] finalComp = new string[validSites.Count];
string[] finalVoid = new string[validSites.Count];
foreach (string num in validSites)
{
//SDLY
foreach (DataStore sdlyTmp in sdly)
{
if (sdlyTmp.siteNumber.Equals(num))
{
finalNet[countTD] += wrapAmntCell(sdlyTmp.netSales);
finalGross[countTD] += wrapAmntCell(sdlyTmp.grossSales);
finalGC[countTD] += wrapAmntCell(sdlyTmp.guestCount);
finalComp[countTD] += wrapAmntCell(sdlyTmp.compTotal);
finalVoid[countTD] += wrapAmntCell(sdlyTmp.voidTotal);
tmpCol03[0] = sdlyTmp.netSales;
tmpCol03[1] = sdlyTmp.grossSales;
tmpCol03[2] = sdlyTmp.guestCount;
tmpCol03[3] = sdlyTmp.compTotal;
tmpCol03[4] = sdlyTmp.voidTotal;
//percentage diff
finalNet[countTD] += wrapPctCell(getPctDiff(tmpCol01[0], tmpCol03[0]));
finalGross[countTD] += wrapPctCell(getPctDiff(tmpCol01[1], tmpCol03[1]));
finalGC[countTD] += wrapPctCell(getPctDiff(tmpCol01[2], tmpCol03[2]));
finalComp[countTD] += wrapPctCell(getPctDiff(tmpCol01[3], tmpCol03[3]));
finalVoid[countTD] += wrapPctCell(getPctDiff(tmpCol01[4], tmpCol03[4]));
//end diffs
totalsCol03[0] += sdlyTmp.netSales;
totalsCol03[1] += sdlyTmp.grossSales;
totalsCol03[2] += sdlyTmp.guestCount;
totalsCol03[3] += sdlyTmp.compTotal;
totalsCol03[4] += sdlyTmp.voidTotal;
}
}
}
(в письменной форме, что я понимаю, что я мог бы, вероятно, объединить свой внутренний Еогеасп и если заявление вложенного в него, используя некоторые .NET 3.5 магию, я все еще учусь, и хотел бы указание на то, как хорошо)
Если эти массивы Col используются для процентных различий.
В конце всех моих циклов я заканчиваю пятью массивами, которые содержат полные строки, от <tr>...</tr>
(19 ячеек данных на строку), после чего я снова перехожу назад через сайт foreach (так как информация хранится позиционно , Данные Store1 находятся в finalNet [0], finalGross [0] и т. Д.) И записывают их в HtmlTextWriter
.
Часть моей проблемы заключается в том, что мои фактические данные хранятся вертикально (с использованием объекта, который содержит полный столбец для одной даты - эти значения вытягиваются из SQL-запросов на основе даты в заголовке столбца), тогда как он должен выводиться горизонтально в таблицу.
Однако у меня возникают проблемы с выяснением способа очистки этого кода и сохранения формата таблицы. Любые мысли были бы весьма признательны.
Если вы работая с веб-формами ASP.NET, я бы предложил исследовать использование связанного [GridView] (http://quickstarts.asp.net/QuickStartv20/aspnet/doc/ctrlref/data/gridview.aspx) или повторителя, которые позволяют выводить данные на основе данных табличных данных. – Reddog
Я не в среде ASP, это исполняемый файл, который запускается на моем SQL-сервере, выгружает HTML-страницу, а затем отправляет ее по электронной почте. Я найду ту же функциональность в DataGridView? – raney
Я отредактировал ваш заголовок. Пожалуйста, смотрите: «Если вопросы включают« теги »в их названиях?] (Http://meta.stackexchange.com/questions/19190/), где консенсус« нет, они не должны ». –