0

我有一个字符串列表列表。我想使用 gridview 向用户展示它。由于不知道列数,我决定动态创建 gridview 字段。我找到了一些教程,但它们都使用 DataTable 。我尝试使用相同的方法,但数据绑定事件的“_columnName”有问题:

    void field_DataBinding(object sender, EventArgs e)
    {

        TextBox txtdata = (TextBox)sender;

        GridViewRow container = (GridViewRow)txtdata.NamingContainer;

        object dataValue = DataBinder.Eval(container.DataItem, _columnName);

        if (dataValue != DBNull.Value)
        {
            txtdata.Text = dataValue.ToString();
        }

    }

因为 list 中没有列。任何建议表示赞赏。

4

1 回答 1

1

一个更简单的方法是设置AutoGenerateColumns为 true 并使用 aDataTable作为数据源。

例如( aspx 可以是一个空的 GridView ):

List<List<String>> data = new List<List<String>>() { 
    new List<String>(){"Row1_Col1", "Row1_Col2",  "Row1_Col3"},
    new List<String>(){"Row2_Col1", "Row2_Col2",  "Row2_Col3"},
    new List<String>(){"Row3_Col1", "Row3_Col2",  "Row3_Col3"},
    new List<String>(){"Row4_Col1", "Row4_Col2",  "Row4_Col3"},
    new List<String>(){"Row5_Col1", "Row5_Col2",  "Row5_Col3"},
};
var tbl = new DataTable();
int maxFieldCount = data.Max(l => l.Count);
for (int i = 1; i <= maxFieldCount; i++)
    tbl.Columns.Add("Column" + i);
foreach (var list in data)
{
    DataRow newRow = tbl.Rows.Add();
    newRow.ItemArray = list.ToArray();
}

现在它可以用作以下的数据源GridView

GridView1.DataSource = tbl;
GridView1.DataBind();
于 2012-07-26T21:31:29.113 回答