我在ASP.NET中使用GridView
,在编辑了列并按下按钮后,我希望将整个GridView
恢复为DataTable
或{{ 1}},我该怎么做?
List
渲染页面后,DataSource为空。
答案 0 :(得分:0)
一旦绑定并呈现数据源,您就无法从Web控件中获取数据源。与您习惯于编程的应用程序不同,Web是无状态的,除非您使用Session
或ViewState
实现,否则它不会保留数据。
在一个典型示例中,您将拥有一个绑定到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;
}
}