Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从GridView数据源中获取数据_C#_Html_Asp.net_Gridview - Fatal编程技术网

C# 如何从GridView数据源中获取数据

C# 如何从GridView数据源中获取数据,c#,html,asp.net,gridview,C#,Html,Asp.net,Gridview,我在ASP.NET中使用GridView,在编辑列并按下按钮后,我想让整个GridView返回到一个数据表或列表,我该如何做 <asp:GridView ID="FireFighters" runat="server" AutoGenerateColumns="false" OnRowDataBound="FireFighters_RowDataBound"> 呈现页面后,数据源为空。一旦数据源被绑定并呈现,您就无法从web控件中获取数据源。与您可能习惯于编程的应用程序不同,web

我在ASP.NET中使用GridView,在编辑列并按下按钮后,我想让整个GridView返回到一个数据表或列表,我该如何做

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

呈现页面后,数据源为空。

一旦数据源被绑定并呈现,您就无法从web控件中获取数据源。与您可能习惯于编程的应用程序不同,web是无状态的,除非您使用Session或ViewState实现,否则它不会持久化数据

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

下面是上述使用ViewState的基本示例:


@CoderofCode的可能重复不是这样的,在页面呈现之后,数据源为空。
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;
    }
}