私はちょうどここで愚かな間違いをしていると思いますが、折り畳み可能なControl(System.Web.UI.Controlから派生したもの) ASP.net ViewState/PostBackモデルASP.netの折りたたみパネル
私はのOnInit()イベントで初期化する私のクラスでのImageButtonを、持っている:
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はbooleanです、そして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 = trueを設定します。
これらの変更を維持するために欠けているものは何ですか?
AjaxControlToolkitで 'CollapsiblePanelExtender'を使用しないのはなぜですか? –
後で設定を保持する必要があり、Sharepoint環境で設定するのがむしろ複雑なのでASP.net AJAXを使用したくありません。また、私はもっと頻繁にjQueryをインクルードするようにする必要がある場合、ゲインは努力のために低すぎると思われる。 –