none
C# Dinamik Butonları Veritabanından Oluşturma RRS feed

  • Soru

  • Arkadaşlar Dinamik Butonları Resturant Programı İçin Kullanacagım Veritabanından Bilgi Alacak 10 Masa Daha eklemek İstiyor 10 Buton Demektir Oluşturdak Sonra Birde Kodları Nasıl Ekleyebilirim Masa Adı Var birde Durumu MAsa Adı 1 Durumu 1 İse veya 2 4 Durum Olacak Bu 2 Bilgiyi Alacak Duruma Göre Buton Renk Değiştirecek Gibi Kodları Nasıl Dinamik Butona Ekleyebiliriz Kullanıcı Masa Yani Buton Eklediginde Kdoları Nasıl Ekleyecek Yukarıdaki Anlattıgım Kodları ?
    12 Ekim 2015 Pazartesi 20:13

Yanıtlar

  • Aynı işi yapmaya çalışıp burayı okuyacak olan diğer ziyaretçiler için yazıyorum, yukarıdaki kodlar(!) ne .net nede oop prensiplerine tam olarak uymuyor.

    Buna benzer bir iş için;

    • öncelikle her masa için bir UserControl oluşturun, bu uc içine button ve label vs kontrollerinizi koyun
    • uc içinde database'den gelecek olan veriler için propertyler oluşturun, gerekirse encapsulation uygulayın
    • tıklanma vs gibi event leri uc içinde oluşturun
    • flowlayout'a bu uc instancelarını ekleyin.

    www.mvcblog.org
    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com

    15 Ekim 2015 Perşembe 07:48
    Moderatör

Tüm Yanıtlar

  • css kullan
    12 Ekim 2015 Pazartesi 21:20
  • otomatik Artan ID Kullanıyorum Masa Adını Ondan Alıyorum Dogrumu Yapıyorum birde Kordinatı Var mesalabuton Size Vereyim 154; 66 Location için  Alt Alta ilk buton 12;12 buton2 12;84 Yani Butonla Arasında 72 gibi bir sayı degeri var 12;84 sonra buton için 84+72 = 156 diyerek buton alt alta kordinatını buldum bunu nasıl yapabilirim
    12 Ekim 2015 Pazartesi 22:09
  • Deleted
    12 Ekim 2015 Pazartesi 22:13
  • Deleted
    12 Ekim 2015 Pazartesi 22:17
  • Bazı Kodlar Ekleycem Masalar Tablosunda İD 1 Masa No Durumunu Alacagım Her İkiside Dogru ise Buton Rengi Şunu Yap Başka Bir Form Aç Ürünler Formu Tabi Orda Kaydını Tutacak Masa 1 Açtıgını Bilecek Tag Yapılıyor Tag yaptım Ama Dinamik Butonla Bu İsteklerimi Oluşturacagım
    12 Ekim 2015 Pazartesi 22:23
  • Furkan Bey Sizden Yanıt Bekliyorum ?
    13 Ekim 2015 Salı 10:29
  • Dinamik Butoları Aşgıdaki Gibi Oluşturum Lakin Her Butona Basıldıgında Masa numarasını Alıp Baska Bir Formda Açmak İstiyorum İd İle Tag Ekledim Ama Saçma Oldu Bende Bir Mantık Kuramadım İlk Defa Dinamik Buton Oluşturdum Butonun Numarasını Yani ID Alıp Ürünler Formunu Açtıgımızda Masa 1Açtıgını Bilecek Bu Kısımı Nasıl Çözebilirim

       int id;

            public void MasaOlustur()
            {
                using (SqlCommand m = new SqlCommand("select MasaID,Durumu from Masalar order by MasaID", bag.baglan()))
                {
                    m.Connection.Open();

                    SqlDataReader oku = m.ExecuteReader();

                    while (oku.Read())
                    {

                        id = Convert.ToInt32(oku["MasaID"]);
                        ////d = Convert.ToInt32(oku["Durumu"]);
                        Button btn = new Button(); 
                        btn.ForeColor = Color.Black;
                        btn.Text = String.Concat("Masa: " + oku["MasaID"]);
                        btn.Size = new System.Drawing.Size(154, 66);
                        btn.Font = new Font(btn.Font.Name, btn.Font.Size, FontStyle.Bold);
                        btn.ForeColor = Color.Black;
                        btn.Tag = id;
                        btn.Click += btn_Click;
                        flowLayoutPanel1.Controls.Add(btn);
                }
                  
                }
            }

            void btn_Click(object sender, EventArgs e)
            {
                   Ürünler u = new Ürünler();
                   u.Tag = id;
                   u.Show();
            }

    14 Ekim 2015 Çarşamba 23:27
  • public void MasaOlustur()
    {
    	using (SqlCommand m = new SqlCommand("select MasaID,Durumu from Masalar order by MasaID", bag.baglan()))
    	{
    		m.Connection.Open();
    		SqlDataReader oku = m.ExecuteReader();
    		while (oku.Read())
    		{
    			////d = Convert.ToInt32(oku["Durumu"]);
    			Button btn = new Button(); 
    			btn.ForeColor = Color.Black;
    			btn.Text = String.Concat("Masa: " + oku["MasaID"]);
    			btn.Size = new System.Drawing.Size(154, 66);
    			btn.Font = new Font(btn.Font.Name, btn.Font.Size, FontStyle.Bold);
    			btn.ForeColor = Color.Black;
    			btn.Tag = Convert.ToInt32(oku["MasaID"]);
    			btn.Click += btn_Click;
    			flowLayoutPanel1.Controls.Add(btn);
    		}
    	}
    }
    
    void btn_Click(object sender, EventArgs e)
    {
       Ürünler u = new Ürünler();
       u.Tag = ((Button)sender).Tag;
       u.Show();
    }

    • Yanıt Olarak Öneren burhanx47 15 Ekim 2015 Perşembe 07:49
    15 Ekim 2015 Perşembe 00:06
  • Aynı işi yapmaya çalışıp burayı okuyacak olan diğer ziyaretçiler için yazıyorum, yukarıdaki kodlar(!) ne .net nede oop prensiplerine tam olarak uymuyor.

    Buna benzer bir iş için;

    • öncelikle her masa için bir UserControl oluşturun, bu uc içine button ve label vs kontrollerinizi koyun
    • uc içinde database'den gelecek olan veriler için propertyler oluşturun, gerekirse encapsulation uygulayın
    • tıklanma vs gibi event leri uc içinde oluşturun
    • flowlayout'a bu uc instancelarını ekleyin.

    www.mvcblog.org
    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com

    15 Ekim 2015 Perşembe 07:48
    Moderatör
  • Hocam gelişmiş yanıt verince olmuyor, önceki konuda bunları nasıl yapacağını söyledim, ben butonu statik yapıyorum şeklinde yanıt verdi. Şimdi biz ona birde UC yazsak, ben tag'ı kullanmak istiyorum der. Bir süre sonra öğrenir. Gelişme gösterdiği kesin. Saygı duyuyorum.

    Fazla bilgiye gerek yok kullanıcı kendisini geliştirmeden biz onda farkındalık, ufuk oluşturamıyoruz. Sanırım sanal olduğundan böyle oluyor.

    En kötüsü sorunun normal bir soru haline gelmesi 3 gün alıyor.

    15 Ekim 2015 Perşembe 08:39
  • Abdullah: dediklerin çok doğru olabilir, ama verilen yanıtlar sadece soruyu sorana özel olmasına ramen, daha sonra bu konuyu inceleyecek arkadaşlar için yanlış yönlendirme olabilir. Bende mesajımın başında bunu belirttim zaten. Senin sorunu çözme ve ettiğin yardımlara ve emeğine karşı bir eleştirim yok.

    www.mvcblog.org
    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com

    15 Ekim 2015 Perşembe 10:58
    Moderatör
  • Yok bende size karşı söylemedim zaten, soruyu soranlara karşı bir şey söyleyemiyoruz onu dile getirmek istedim. 
    15 Ekim 2015 Perşembe 11:08
  • Önal Bey Bir Örnek verebilirmsiniz Ben Mantıgını Kavramak İsterim Ezberci Değilim Progalmada Yeni Sayılırım Temel Bilgileri Aldım Artık Bir Proje Yapmaya Karar Verdim Yukarıdaki Açıklamanıza Göre Bir Örnek Vererek Açıklayabilirmsiniz
    15 Ekim 2015 Perşembe 11:19
  • Projenize bir UserControl ekleyin. İçine "tek bir masa butonu" için tasarımınızı yapın. Label olabilir Picture olabilir, ne istiyorsanız.

    Daha sonra bu uc içinde değişken olan, yani databaseden gelecek veriler için propertyler oluşturun. Örn;

    public string Caption
    {
        get { return label1.Text; }
        set { label1.Text; }
    }
    



    gibi.

    UC'ün constructoruna parametre verin, mesela Id;

    private int _id;
    
    public UserControlTable(int Id)
    {
       this._id = Id;
    }
    

    bu şekilde her uc kendi idsini saklayabilecek ve id'siz uc instance'ı olamayacak.

    Daha sonra event için EventArgs classı oluşturun;

    public class TableItemClickedEventArgs
    {
       public int Id { get; set; }
    }

    Şimdi sıra user controlünize delegate eklemede;

    public delegate void TableItemClickedEventHandler(UserControlTable sender, TableItemClickedEventArgs e);
    
    //eventi tanımlayalım;
    public event TableItemEventHandler TableClicked;

    Şimdi uc üzerine tıklayınca bu eventi raise edelim;

    this.Click += (s,evt) => {
    
      if(TableClicked!=null)
         TableClicked(this, new TableClickedEventArgs() { Id = this._id });
       
    };

    artık her uc id tutuyor ve tıklanınca bu idnin ne olduğunu EventArgs ' dan alabiliyoruz.



    www.mvcblog.org
    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com

    15 Ekim 2015 Perşembe 11:35
    Moderatör
  • Tam Oalrak Anlayamadım Bunların Hepsini Classlar İçindemi Yapacagız Biraz Detaya Girebilirmiyiz
    15 Ekim 2015 Perşembe 11:39
  • teamviewer id verirmisin

    www.mvcblog.org
    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com

    15 Ekim 2015 Perşembe 11:42
    Moderatör
  • 574 038 439

    6414

    15 Ekim 2015 Perşembe 11:55
  • 6114
    15 Ekim 2015 Perşembe 11:59
  • şifre yanlış olabilir mi?

    www.mvcblog.org
    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com

    15 Ekim 2015 Perşembe 11:59
    Moderatör
  • 6114 pardon yalnış yazmışım 

    dogrusu

    574 038 4396114 

    15 Ekim 2015 Perşembe 11:59
  • Önal Bey Abdullah Bey Sisteminde Gitmeyi Tercih Ediyorum Sizin Gösterdiginiz Yöntem Professional Beni Aşar Kodlar Karışık Classlar Degil Hiç Bir Şey Anlamadım Ezber Olmasınıda İstemem Anlamadıgım Bir Şeyi Kullananmam Mantıksız Olur
    • Düzenleyen Caner KORKMAZ 15 Ekim 2015 Perşembe 12:30 düzeltme
    15 Ekim 2015 Perşembe 12:25
  • Bence anlamadığınız şeyi öğrenmeniz daha mantıklı. Gene de siz bilirsiniz. Atla-deve bişey yapmadım , 2 property bi event.

    Birde profesyonel kelimesi, "o işi para kazanmak için yapan kişiye" denir, ben ne profesyoneller gördüm 9gag lık.


    www.mvcblog.org
    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com



    15 Ekim 2015 Perşembe 12:53
    Moderatör
  • Eventları Bilmiyorum Propety ve Class İle Panel Yaptım Propert İle İlgili Makale Hazırladım Lakin Henüz Yayınlamadım Eventları Bilmedigim İçin Kodlar Karışık Geldi Benim Kafamı Karıştırdınız Benim Yaptıgım Yöntem Yalnışmı  Sizin Yönteminizi Anlamayamı Çalışsam Şaşırıdm Kaldım?
    15 Ekim 2015 Perşembe 13:13
  • Kodlama Oalrak Para Kazanan Anlamında Demek İstemedim Yalnış Anlamayın 
    15 Ekim 2015 Perşembe 16:03
  • Ben Bu sistemi Kişisel Mesajlaşma Sistemim de Kullanmak İstiyorum Ama Örnek : 2000 Kullanıcı İçin Ayrı Ayrımı UserControl Kullanacağım...
    4 Temmuz 2017 Salı 13:56