C# 如何从GridView数据源中获取数据
我在ASP.NET中使用GridView,在编辑列并按下按钮后,我想让整个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: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;
}
}