ASP.NET: Самый Короткий способ представить DataTable к строке (HTML)?

И то, и другое я бы посчитал ложным. Второй вопрос будет верным, если вы спросите о количестве кодовых точек Юникода, но спросите о «длине». Длина строки - это количество ее элементов, которые являются словами. На случай, если в строке есть только кодовые точки Юникода из BMP (базовой многоязычной плоскости), длина равна количеству символов / кодов Юникода. Если есть кодовые точки из-за BMP или суррогатов-сирот (суррогаты высокого или низкого уровня, которые не отображаются в виде упорядоченной пары), длина НЕ равна количеству символов / кодовых точек.

Прежде всего, строка - это набор слов, список слов, массив слов или поток слов. Его содержание - 16-битные слова и все. Называть элемент "char" или "wchar" грех в отношении символов Юникода. Поскольку у символа юникода может быть кодовая точка больше 0xFFFF, он не может быть сохранен в типе шириной 16 битов, и если этот тип называется char или wchar, это еще хуже, потому что он может содержать только кодовые точки, ограниченные 0xFFFF, что соответствует юникоду 1.0 стандарт, которому сегодня 20 лет. Чтобы хранить даже максимально возможную кодовую точку Юникода в одном типе данных, этот тип должен иметь 21 бит, но такого типа нет, поэтому мы должны использовать 32-битный тип. Фактически существует статический метод (класса char!) С именем ConvertToUtf32 (), который делает именно это, он может возвращать низкую кодовую точку ASCII или даже самую высокую кодовую точку Unicode, в результате чего последний подразумевает, что этот метод может обнаружить суррогатную пару в позиции строки.

9
задан Matias Nino 19 June 2009 в 16:08
поделиться

4 ответа

Вы можете использовать элементы управления 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; }
}
16
ответ дан 4 December 2019 в 07:48
поделиться

Если это только для целей ведения журнала, возможно, не имеет смысла выводить их как XML - проще манипулировать, если вам нужно. Вам просто нужно вызвать метод WriteXml.

2
ответ дан 4 December 2019 в 07:48
поделиться

Создайте элемент управления, создайте средство записи 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();
    }
}
2
ответ дан 4 December 2019 в 07:48
поделиться

Я использую эту функцию через свое приложение. Это довольно просто

  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();
        }
8
ответ дан 4 December 2019 в 07:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: