基本上,我有一个下拉列表和一个动态添加的用户控件。用户控件根据在下拉列表中所做的选择加载网格视图。下拉列表不是用户控件的一部分。
现在,问题是,每次用户更改下拉列表中的选择时,我如何模拟(isControlPostback = false)?看起来ViewState还记得这个控件。
在我的用户控件中,我有:
protected bool IsUserControlPostBack
{
get
{
return this.ViewState["IsUserControlPostBack"] != null;
}
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsUserControlPostBack)
{
ViewState.Add("IsUserControlPostBack", true);
//load stuff in the grid view and bind it
}
}当用户更改下拉列表中的选择时,我有一个javascript确认框,页面会回发。因此下拉列表的OnSelectedIndexChanged事件不会被触发。每次选择的索引发生变化时,我想移除来做类似的事情: ViewState.Remove("IsUserControlPostBack");
发布于 2009-03-02 20:53:21
对于任何有兴趣知道答案的人来说:我最终在用户控件中实现了一个公共属性,并在服务器下拉列表SelectedIndexChanged事件而不是OnInit中加载了该控件。这消除了显式使用视图状态的需要。
发布于 2009-02-28 08:59:34
您可以在prerender事件中对控件进行更改。当此事件被激发时,所有其他操作都会执行。或者,您可以在用户控件中使用公共属性,并在需要设置值时对其做出相应的反应。
发布于 2009-03-01 23:16:31
您在用户控件中访问的ViewState与在页面上访问的one不同。如果您需要页面与用户控件进行通信,我建议您为此目的在用户控件上添加一个公共方法。
如果由于某种原因,您更喜欢与ViewState方法类似的方法,可以尝试Context.Items。注意,在请求之间不会保留Context.Items。
https://stackoverflow.com/questions/597226
复制相似问题