我有一个字符串列表。我想使用gridview向用户显示它。由于列数未知,我决定动态创建gridview字段。我发现了一些tutorials,但他们都使用了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();
}
}
因为列表中没有列。任何建议都表示赞赏。
答案 0 :(得分:1)
更简单的方法是将AutoGenerateColumns
设置为true并使用DataTable
作为数据源。
例如(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();