لوحة للطي في ASP.net
-
22-08-2019 - |
سؤال
حسنا، أعتقد أنا مجرد ارتكاب خطأ غبي هنا، ولكن أريد أن إنشاء التحكم (مشتقة من System.Web.UI.Control) التي هي قابلة للطي، وذلك باستخدام حسن رأ 'ASP.net حالة العرض / إعادة النشر نموذج.
ولدي 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);
}
ولسوء الحظ، فإنه لا يعمل. I انقر على ImageButton، الصفحة يفعل هو إعادة النشر، ولكن بعد ذلك لا يغير انها دولة - إذا تم توسيعه من قبل، انها لا تزال توسعت بعد
في منشئ، أنا وضعت EnableViewState = صحيح؛
وأي فكرة عما أنا في عداد المفقودين من أجل أن تستمر هذه التغييرات؟
المحلول
هل فعلا إنقاذ الدولة من لوحة الخاص بك (منطقية انهار) في حالة العرض؟
ViewState("collapsed") = Collapsed
وحالة العرض لا تلقائيا حفظ أي ممتلكات / متغير لديك، عليك أن يقولوا ذلك ما يجب القيام به.
نصائح أخرى
إذا لا حالة العرض العمل بالنسبة لك، يمكنك دائما محاولة لتخزينه كدورة.