我有一段代码:
protected void Page_Load(object sender, EventArgs e)
{
_SearchResult.GridViewChanged += _SearchResult_GridViewChanged;
}
public Control GvControls { get; set; }
protected void _SearchResult_GridViewChanged(object sender, Orders.GridViewChangedEventArgs e)
{
this.GvControls = e.GControl;
}
protected void export_ServerClick()
{
new ExportGridView(this.GvControls,"report");
}
一个控件使用事件arg生成事件并通过arg推送控件,然后其他(此)控件使用此arg执行一些俯卧撑
当我尝试做推动export_ServerClick()
属性GvControls
等于null但是在不应该为空之前。为什么会这样。
ThankX
答案 0 :(得分:1)
所有变量(甚至控件)都放置在页面生命周期的末尾。这就是为什么你必须在回发时重新创建所有动态创建的控件的原因。出于同样的原因,您必须使用所需的值重新初始化变量。
所以我假设首先触发GridViewChanged
- 事件。然后用户单击另一个触发export_ServerClick
- 事件处理程序的按钮。此时,字段GvControls
已获得默认值null
。
您必须在某处保留此值,例如Session
。
Nine Options for Managing Persistent User State in Your ASP.NET Application
但是,我认为你不应该坚持控制本身。也许存储控件的ID就足够了。也许最好在导出它之前从数据源再次加载它有两个原因: