我需要构建一个显示数据的表单,格式如下:
M(1 Nov), T(4 Nov), S(7 Nov) etc
user 1 yes/no yes/no yes/no yes/no
user 2 yes/no yes/no yes/no yes/no
是/否将由复选框表示,并且每个月内将出现周一,周四和周日列 - 动态计算出来。我打算使用匿名类型解释here来表示数据。这是一个合理的方法吗?我的问题是如何使用GridView或DataList控件显示它。如果数据结构是动态的,我如何配置GridView / DataList控件以绑定到数据?
对我正在尝试的方法有更好的方法吗?
答案 0 :(得分:0)
使用存储在ViewState中的DataTable来传输数据并绑定到GridView / DataList。
public DataTable MyDynamicDataTable {
get { return (DataTable)ViewState["MyDynamicDataTable"]; }
set { ViewState["MyDynamicDataTable"] = value; }
}
...
public void Page_Load(object sender, EventArgs e) {
if (!Page.IsPostBack) {
MyDynamicDataTable = BuildMyDynamicDataTable();
MyGridView1.DataSource = MyDynamicDataTable;
MyGridView1.DataBind();
}
}
...
public DataTable BuildMyDynamicDataTable() {
DataTable dt = new DataTable();
foreach (obj in myDayCollection) {
dt.Columns.Add(...);
}
foreach (obj in myCollection) {
dt.Rows.Add(...);
}
return dt;
}
当用户进行更改时,它应该持久保存到DataTable结构。完成更改并成功验证后,您可以简单地预先处理(MyDynamicDataTable中的DataRow)来处理用户所做的选择并将它们保存到数据库或其他任何内容。