使用GridView / DataList显示动态数据

时间:2010-11-16 22:13:36

标签: asp.net

我需要构建一个显示数据的表单,格式如下:

          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控件以绑定到数据?

对我正在尝试的方法有更好的方法吗?

1 个答案:

答案 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)来处理用户所做的选择并将它们保存到数据库或其他任何内容。