將DataTable轉換爲字符串(HTML格式)的最簡單方法是什麼?ASP.NET:將DataTable呈現爲字符串(HTML)的最短途徑?
編程綁定到UI控件並呈現到ASP.NET頁面是不可接受的。不能依賴於ASP.NET頁面生命週期。
這樣做的目的應該沒有關係,但要滿足好奇心:這是用於執行大量DataTable處理的算法中的日誌/調試/轉儲目的。
謝謝!
將DataTable轉換爲字符串(HTML格式)的最簡單方法是什麼?ASP.NET:將DataTable呈現爲字符串(HTML)的最短途徑?
編程綁定到UI控件並呈現到ASP.NET頁面是不可接受的。不能依賴於ASP.NET頁面生命週期。
這樣做的目的應該沒有關係,但要滿足好奇心:這是用於執行大量DataTable處理的算法中的日誌/調試/轉儲目的。
謝謝!
您可以使用ASP.net如GridView控件,DataGrid的控制,並引導他們呈現到StringBuilder的使用StringWriter的,沒必要用ASP.net頁面對於這一點,這是在控制檯
一個簡單的例子class Program
{
static void Main(string[] args)
{
IList<Person> persons = new List<Person>()
{
new Person{Id = 1, Name="Test Name 1"},
new Person{Id = 2, Name="Test Name 2"}
};
GridView gridView = new GridView();
StringBuilder result = new StringBuilder();
StringWriter writer = new StringWriter(result);
HtmlTextWriter htmlWriter = new HtmlTextWriter(writer);
gridView.DataSource = persons;
gridView.DataBind();
gridView.RenderControl(htmlWriter);
Console.WriteLine(result);
}
}
class Person
{
public int Id { get; set; }
public string Name { get; set; }
}
創建控件,創建HTML編寫器,設置控件的任何設置或數據綁定,然後使用HTML編寫器調用渲染方法。
然後,您可以從編寫器中獲取字符串。
編輯:我最初誤讀了這個問題,並認爲你想渲染一個數據網格。
Datatable可以很容易地呈現給它的XML。
你問過HTML。
這是一個控制檯應用程序代碼,它將使用datagrid控件呈現數據表。
class Program
{
static void Main(string[] args)
{
DataTable dt = new DataTable();
dt.Columns.Add("Column1");
dt.Columns.Add("Column2");
dt.Rows.Add("RowValue1", "Field2RowValue1");
dt.Rows.Add("RowValue2", "Field2RowValue2");
DataGrid dg = new DataGrid();
dg.DataSource = dt;
dg.DataBind();
StringWriter sw = new StringWriter();
HtmlTextWriter w = new HtmlTextWriter(sw);
dg.RenderControl(w);
Console.Write(sw.ToString());
Console.ReadLine();
}
}
我通過我的應用程序使用這個函數。這是非常簡單的
static public string ConvertDataTableToHTMLString(System.Data.DataTable dt, string filter, string sort, string fontsize, string border, bool headers, bool useCaptionForHeaders)
{
StringBuilder sb = new StringBuilder();
sb.Append("<table border='" + border + "'b>");
if (headers)
{
//write column headings
sb.Append("<tr>");
foreach (System.Data.DataColumn dc in dt.Columns)
{
if (useCaptionForHeaders)
sb.Append("<td><b><font face=Arial size=2>" + dc.Caption + "</font></b></td>");
else
sb.Append("<td><b><font face=Arial size=2>" + dc.ColumnName + "</font></b></td>");
}
sb.Append("</tr>");
}
//write table data
foreach (System.Data.DataRow dr in dt.Select(filter,sort))
{
sb.Append("<tr>");
foreach (System.Data.DataColumn dc in dt.Columns)
{
sb.Append("<td><font face=Arial size=" + fontsize + ">" + dr[dc].ToString() + "</font></td>");
}
sb.Append("</tr>");
}
sb.Append("</table>");
return sb.ToString();
}
如果這只是爲了記錄的目的,會不會反而更有意義登錄出來作爲XML - 更容易操縱,如果你需要。你只需要調用WriteXml方法。
即使是合理大型的表格10,000+條記錄,我也使用了相同的方法。 – 2009-09-16 17:56:43