S.A.

ASPX de Collection özellikli bir web control oluşturmak iistedim. Kodlarını en sonda verdiğim objeyle ilgili şöyle bir sıkıntım var.

Projeyi kapatmadan collection editörü kapatıp açsam objeler görünüyor.

Fakat Designtime da tasarladığım objenin bilgilerine ne runtime da ne de projeyi kapatıp açtığımda ulaşamıyorum.

Yani bir şekilde tasarım esnasındaki bilgiler kaydedilmeden uçup gidiyor. Proje dosyalarını açtığımda ne aspx dosyasında ne de .designer.cs dosyasında herhangi bir kayıda da rastalayamıyorum.

Aşağıdaki resimde bu durumu kısmen göstermek istiyorum.

Devamında kodların 50 kez yazılıp bozulduktan sonraki kod halini görebilirsiniz :)

Buradan yola çıkarak ya da asp.net de resimdeki örnekte görüldüğü gibi collection yönetebileceğim düzeltme ya da collection ile ilgili örnek tavsiyelerinizi bekliyorum.

Teşekkürler.

Collection edtor

Sonuç

Rol.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace SANNET.ToolBox.TemelRoller
{/*
    [ControlBuilder(typeof(ListItemControlBuilder))]
    [ParseChildren(true, "Text")]*/
    [TypeConverter(typeof(ExpandableObjectConverter))]
    public class Rol 
    {
        private string rolAdi;
        private AksiyonTuru aksiyonIcinKullan;
        private EfektTuru iseYapilacak;
        private string hataMesaji;
        private IOzelEfekt ozelEfekt;

        public String RolAdi { get { return rolAdi; } set { rolAdi = value; } }
        public AksiyonTuru AksiyonIcinKullan { get { return aksiyonIcinKullan; } set { aksiyonIcinKullan = value; } }
        public EfektTuru IseYapilacak { get { return iseYapilacak; } set { iseYapilacak = value; } }
        public String HataMesaji { get { return hataMesaji; } set { hataMesaji = value; } }
        public IOzelEfekt OzelEfekt { get { return ozelEfekt; } set { ozelEfekt = value; } }

        public Rol()
        {
            RolAdi = "Hicbiri";
        }

        /*
        public string GetAttribute(string key)
        {
            return (String)ViewState[key];
        }

        public void SetAttribute(string key, string value)
        {
            ViewState[key] = value;
        }*/
    }

}

RolListesi.cs

using SANNET.ToolBox.Yardimcilar;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Drawing.Design;
using System.Web.UI;
namespace SANNET.ToolBox.TemelRoller
{
    //[TypeConverterAttribute(typeof(System.ComponentModel.ExpandableObjectConverter))]
   [TypeConverterAttribute(typeof(System.ComponentModel.ExpandableObjectConverter))]
    public class RolListesi : CollectionBase//ICollection<Rol>
    {
        private Collection<Rol> roller;
        private Control parent;

        public RolListesi(Control parent)
        {
            this.parent = parent;

            parent.PreRender += parent_PreRender;
            parent.Load += parent_PreRender;
            roller = new Collection<Rol>();

        }

        void parent_PreRender(object sender, EventArgs e)
        {
            RolIslemleri.PreRenderIsle((Control)sender, this);
        }

        public Control Parent { get { return this.parent; } }

        public Rol rolGetir(String rolAdi)
        {
            foreach (Rol r in roller) {
                if (r.RolAdi.Equals(rolAdi))
                    return r;
            }
            return null;
        }

        public bool Contains(String rolAdi)
        {
            return rolGetir(rolAdi) != null;
        }

        public Rol this[int index]
        {
            get { return (Rol)roller[index]; }
        }
        public void Add(Rol emp)
        {
            roller.Add(emp);
        }
        public void Remove(Rol emp)
        {
            roller.Remove(emp);
        }
    }
}

RolCollectionEditor.cs

using System;
using System.Collections.Generic;
using System.ComponentModel.Design;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SANNET.ToolBox.TemelRoller
{
    public class RolCollectionEditor : CollectionEditor
    {
        public RolCollectionEditor(Type type)
            : base(type)
        {
        }

        protected override string GetDisplayText(object value)
        {
            Rol item = new Rol();
            item = (Rol)value;

            return base.GetDisplayText(string.Format("{0}, {1}", item.RolAdi,
                item.AksiyonIcinKullan));
        }
    }
}

SANButton.cs

using DevExpress.Web.ASPxEditors;
using SANNET.ToolBox.TemelRoller;
using System.ComponentModel;
using System.Web.UI;

namespace SANNET.ToolBox.Bilesenler
{
    public class SANButton : ASPxButton, IRolSahibi
    {

        private RolListesi roller;

/*        [Editor(typeof(System.ComponentModel.Design.CollectionEditor),
            typeof(System.Drawing.Design.UITypeEditor))]*/
        [Editor(typeof(RolCollectionEditor),
            typeof(System.Drawing.Design.UITypeEditor))]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
        public RolListesi Roller { get {
            if (roller == null)
            {
                roller = new RolListesi(this);
            }

            return roller; } }

    }
}

soruldu: 26 Mar '14, 08:45

Fatih's gravatar image

Fatih
51761021
cevap kabul oranı: 40%

değiştirildi: 26 Mar '14, 08:48


El-Cevap

[PersistenceMode(PersistenceMode.InnerProperty)]

Örnek Kullanım

private Roller roller;
[Editor(typeof(RolCollectionEditor), typeof(System.Drawing.Design.UITypeEditor))]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
[PersistenceMode(PersistenceMode.InnerProperty)]
public Roller Roller
{
    get
    {
        if (roller == null)
        {
            roller = new Roller();
        } return roller;
    }
}
permanent link

cevaplandı: 27 Mar '14, 11:18

Fatih's gravatar image

Fatih
51761021
cevap kabul oranı: 40%

Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×158
×8
×4

Soruldu: 26 Mar '14, 08:45

Görüntüleme: 623 kez

Son güncelleme: 27 Mar '14, 11:18

powered by BitNami OSQA