题
好吧,我觉得我只是做一个愚蠢的错误在这里,但我想创建一个控制(从System.Web.UI.Control派生)是可折叠的,使用好醇” ASP.net的ViewState /回传模型。
我有一个的ImageButton在我的类,这是我在OnInit()事件初始化:
private ImageButton _collapseImage;
protected override void OnInit(EventArgs e)
{
if (_collapseImage == null)
{
_collapseImage = new ImageButton();
_collapseImage.Click += CollapseImageClick;
}
_collapseImage.ImageUrl = string.Format("/images/{0}", IsCollapsed ? "plus.gif" : "minus.gif");
_collapseImage.Width = 16;
_collapseImage.Height = 16;
}
IsCollapsed是布尔值,并且只是CollapseImageClick切换它:
private void CollapseImageClick(object sender, ImageClickEventArgs e)
{
IsCollapsed = !IsCollapsed;
}
我的CreateChildControls然后检查该参数:
protected override void CreateChildControls()
{
Panel pnl = new Panel();
pnl.Controls.Add(_collapseImage);
if(!IsCollapsed)
{
// Add some more Controls
}
Controls.Add(pnl);
}
不幸的是,这是行不通的。我点击的ImageButton,页面确实是回发,但随后并没有改变它的状态 - 如果它之前扩大,它仍然是扩大后的
在构造函数中,我设置的EnableViewState =真;
任何线索我为了保存这些变化很想念?
解决方案
您实际保存您的面板(倒塌的布尔值)的状态到视图状态?
ViewState("collapsed") = Collapsed
在视图状态不会自动保存任何属性/变量你有,你必须告诉它做什么。
其他提示
如果的ViewState不为你工作,你总是可以尝试将其保存为一个会话。
不隶属于 StackOverflow