我知道必須有一個更清潔,更簡潔的方式來做到這一點......但我不成氣候嘗試谷歌它。基本上,我有一組數據需要寫入HTML表格。1.4.3值的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;
}
}
}
(以書面,我知道我大概可以結合我內心的foreach和如果嵌套在其聲明中使用一些.NET 3.5的魔法,我還在學習,並會在該感激指導和)
那些Col數組用於百分比差異。
在我的所有循環結束時,我最終得到了包含全行的五個數組,每行有<tr>...</tr>
(每行19個數據單元格),然後我再次循環回到foreach站點(因爲信息存儲在位置上,Store1的數據位於finalNet [0],finalGross [0]等),並將它們寫入HtmlTextWriter
。我的問題
部分原因是,我的實際數據是垂直存儲(使用一個包含一個日期一整列的對象 - 這些值是基於在列標題的日期SQL查詢拉) - 而它具有在表格中水平輸出。
不過,我在搞清楚如何收拾這個代碼,並把我的表的格式完整的問題。任何想法將不勝感激。
如果你是使用ASP.NET Web窗體,我會建議使用綁定的[GridView](http://quickstarts.asp.net/QuickStartv20/aspnet/doc/ctrlref/data/gridview.aspx)或Repeater來調查數據綁定輸出的表格數據。 – Reddog 2013-03-08 04:19:45
我不在ASP環境中,這是在我的SQL服務器上運行的可執行文件,轉儲HTML頁面,然後通過電子郵件發送出去。我會在DataGridView中找到相同的功能嗎? – raney 2013-03-08 05:28:46
我編輯了你的標題。請參見「[應的問題包括‘標籤’,在他們的頭銜?(http://meta.stackexchange.com/questions/19190/)」,這裏的共識是「不,他們不應該」。 – 2013-03-08 06:39:37