سؤال

حسنا، أعتقد أنا مجرد ارتكاب خطأ غبي هنا، ولكن أريد أن إنشاء التحكم (مشتقة من 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

وحالة العرض لا تلقائيا حفظ أي ممتلكات / متغير لديك، عليك أن يقولوا ذلك ما يجب القيام به.

نصائح أخرى

إذا لا حالة العرض العمل بالنسبة لك، يمكنك دائما محاولة لتخزينه كدورة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top