【问题标题】:How do I get data back out of a GridView DataSource如何从 GridView 数据源中取回数据
【发布时间】:2015-05-28 04:16:17
【问题描述】:

我在 ASP.NET 中使用GridView,在编辑列并按下按钮后,我想将整个GridView 恢复为DataTableList,我该怎么做?

<asp:GridView ID="FireFighters" runat="server" AutoGenerateColumns="false"
OnRowDataBound="FireFighters_RowDataBound">

渲染页面后,DataSource 为空。

【问题讨论】:

标签: c# html asp.net gridview


【解决方案1】:

一旦数据源被绑定和呈现,您就无法从 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;
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-07
    • 1970-01-01
    • 1970-01-01
    • 2017-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多