如何从GridView DataSource中获取数据

时间:2015-03-24 17:54:39

标签: c# html asp.net gridview

我在ASP.NET中使用GridView,在编辑了列并按下按钮后,我希望将整个GridView恢复为DataTable或{{ 1}},我该怎么做?

List

渲染页面后,DataSource为空。

1 个答案:

答案 0 :(得分:0)

一旦绑定并呈现数据源,您就无法从Web控件中获取数据源。与您习惯于编程的应用程序不同,Web是无状态的,除非您使用SessionViewState实现,否则它不会保留数据。

在一个典型示例中,您将拥有一个绑定到GridView的基础数据集,同时您可以将其存储在ViewState中。用户对网格的任何更改都需要触发某些内容以更改基础数据集,然后将控件重新绑定到该数据集。还有其他方法可以做到这一点,但重点是你必须跟踪变化。

以下是使用ViewState

的上述基本示例
protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
        InitialDataLoad();
}

private void InitialDataLoad()
{
    var dt = new DataTable();
    dt.Columns.Add("SomeData");

    var dr = dt.NewRow();
    dr[0] = "some initial data here";
    dt.Rows.Add(dr);

    GridView1.DataSource = dt;
    GridView1.DataBind();

    ViewState["dt"] = dt;
}

protected void Button1_Click(object sender, EventArgs e)
{
    // adds a row

    var dt = ViewState["dt"] as DataTable;

    if (dt != null)
    {
        var dr = dt.NewRow();
        dr[0] = "some more data here";
        dt.Rows.Add(dr);

        GridView1.DataSource = dt;
        GridView1.DataBind();

        ViewState["dt"] = dt;
    }
}