Создание GridView со столбцами, сгенерированными во время выполнения - PullRequest
2 голосов
/ 15 января 2011

У меня есть DataTable, где столбцы генерируются программно во время выполнения. Затем я связываю этот DataTable с GridView. Что мне интересно, так это то, как я могу создать GridView, чтобы приспособиться к этому, и если это невозможно, как я могу вывести DataTable в красиво отформатированный HTML.

Ответы [ 3 ]

9 голосов
/ 15 января 2011

GridView имеет AutogenerateColums -подобное свойство для этой цели. Вы также можете генерировать столбцы на лету, например:

VB.NET

Dim tbl As New DataTable
tbl.Columns.Add("ID", GetType(Int32))
tbl.Columns.Add("Name", GetType(String))
tbl.Columns.Add("Birthday", GetType(Date))
Dim pers As DataRow = tbl.NewRow
pers("ID") = 1
pers("Name") = "Tim"
pers("Birthday") = New Date(1973, 6, 9)

используйте AutoGenerateColumns, чтобы позволить grid генерировать сам столбец:

Me.GridView1.AutoGenerateColumns = True
Me.GridView1.DataSource = tbl
Me.GridView1.DataBind()

или динамически генерировать столбцы

For Each col As DataColumn In tbl.Columns
    Dim field As New BoundField
    field.DataField = col.ColumnName
    field.HeaderText = col.ColumnName
    GridView1.Columns.Add(field)
Next

C #

foreach (DataColumn col in dt.Columns)
{    
    BoundField field = new BoundField();
    field.DataField = col.ColumnName;
    field.HeaderText = col.ColumnName;
    GridView1.Columns.Add(field);
}
1 голос
/ 15 января 2011

Просто потому, что другие ответы не охватили это, вот как настроить GridView с пользовательскими столбцами программно.

    private GridView SetUpGrid()
    {
        GridView GView = new GridView();

        GView .ColumnHeaderToolTip = "MyToolTip";

        GridViewColumn gvc1 = new GridViewColumn();
        gvc1.DisplayMemberBinding = new Binding("Col1Name");
        gvc1.Header = "Column One";
        gvc1.Width = Double.NaN; // Auto-Size
        GView .Columns.Add(gvc1);
        GridViewColumn gvc2 = new GridViewColumn();
        gvc2.DisplayMemberBinding = new Binding("Col2Name");
        gvc2.Header = "Column Two";
        gvc2.Width = Double.NaN;
        GView .Columns.Add(gvc2);
        GridViewColumn gvc3 = new GridViewColumn();
        gvc3.DisplayMemberBinding = new Binding("Col3Name");
        gvc3.Header = "Column Three";
        gvc3.Width = Double.NaN;
        GView .Columns.Add(gvc3);
        GridViewColumn gvc4 = new GridViewColumn();
        gvc4.DisplayMemberBinding = new Binding("Col4Name");
        gvc4.Header = "Column Four";
        gvc4.Width = Double.NaN;
        GView .Columns.Add(gvc4);

        return GView;
    }
1 голос
/ 15 января 2011

Вы должны иметь возможность просто установить DataTable в качестве источника данных gridview. GridView имеет свойство AutoGenerateColumns. Убедитесь, что он установлен на true, или предварительно создайте столбцы вручную перед выполнением привязки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...