我有一个页面,我在其中创建了一个动态表,其中包含引发事件的动态控件。它有效,但我不想在某些事件中重新生成该表(因此在 page_load 之后)以打印表修改。
我理解这个问题,此时我的控件没有保留在视图状态中,因为它们是在 page_load 之后创建的,并且它们的事件没有引发。但我怎么能这样做呢?
这是我的代码:
protected void Page_Load(object sender, EventArgs e)
{
generateTable(); // When pass just here, it works well
}
private void generateTable()
{
Table tbl = new Table();
// Here I create my table with controls
tableContainer.Controls.Clear(); // tableContainer is a Panel fixed in aspx page
tableContainer.Controls.Add(tbl);
}
protected void txt_TextChanged(object sender, EventArgs e)
{
// Do some stuff to change values in the table
generateTable(); // Re-generate (but events will not be raised)
}
更新 1:
我想到了一些事情(这使我的开发变得复杂),但我应该做 generateTable 来创建我所有的线条和控件并在每个 page_load 上调用它。另一方面,创建另一种填充控件的方法?所以在事件中,我称之为第二个。
但是我的表是动态生成的,也可以在事件之后添加控件(我有一个下拉列表,它在表中创建一个新行和控件,所以我也被困在这里,因为我一开始看不到该行回发?)