Forum
Arkadaşlar benim projemde 16 adet button var ve bu buttonlara ben el ile değil de veri tabanından veri çekerek isim vereceğim.
veri tabanında laboratuvar diye bir tablo oluşturdum ve o tabloda ola laboratuvar isimleri bu 16 adet butona tek tek gelecek
mesela;
1.button a lab_210
2.button a lab_211 vb.
ama birde şu var ki şu anda kayıtlı 10 laboratuvar var ve öyle kalacak yeni laboratuvarlar eklendiği zaman otomatik olarak button lara yansıyacak isimleri.yani 16 button un 10u dolu olacak 6 sı boş yeni laboratuvarlar eklendikçe o boş kalan 6 button da oto olarak dolacak.
acaba bu kodu nasıl yazabilirim.
Ben;
private void bilgial()
{
DataTable dt = veritabani.verigetir("select*from laboratuvar");
button1.Text = dt.Rows[0]["L_adi"].ToString();
button2.Text = dt.Rows[1]["L_adi"].ToString();
button3.Text = dt.Rows[2]["L_adi"].ToString();
button4.Text = dt.Rows[3]["L_adi"].ToString();
button5.Text = dt.Rows[4]["L_adi"].ToString();
button6.Text = dt.Rows[5]["L_adi"].ToString();
button7.Text = dt.Rows[6]["L_adi"].ToString();
button8.Text = dt.Rows[7]["L_adi"].ToString();
button9.Text = dt.Rows[8]["L_adi"].ToString();
button10.Text = dt.Rows[9]["L_adi"].ToString();
button11.Text = dt.Rows[10]["L_adi"].ToString();
}
böyle bir kod yazdım veritabani diye ayrı bir class oluşturdum ve bu bilgial() metodunu da form1_load a koydum.böyle buttonlara isim verebiliyorum ama yeni gelecek buttonlar için işlem yapamadım lütfen yardımcı olabilir misiniz?
Yarımdı olan olmayan herkese teşekkür ederim şimdiden...
Selam,
Ben senin yerinde olsam buttonları dinamik olarak oluştururdum. Bu şimdilik 16 olur yarın 160 olur.
Kodda yazım hatalar olabilir örnek olması için karalayacağım.
FlowLayoutPanel fp = new FlowLayoutPanel();
int i = 0;
SqlDataReader dr = cmd.ExecureReader();
while (dr.Read())
{
Button btn = new Button ();
btn.text = dr[i].ToString();
btn.Width = 200;
vs vs vs..
fp.Controls.Add(btn);
i++;
}
Eğer projeni win forms üzerinden yapıyor isen. FlowLayout panel kullanabilirsin. Diğer türlüde div vs oluşturup içlerine atabilirsin.
Takıldığında sorarsan yardımcı olmaya çalışırım.
Saygılarımla,
Burak
Bu kodları Form1 in içine yazıyoruz değil mi?
Selam,
Yardımcı tabiki oluruz problem yok.
Soru 1.) form1 in üstünde yönetici paneli diye bir button var benim yönetici olarak belirleyeceğim kişi görebilecek o button u sadece bunu nasıl yaparım.
Cevap 1) Formuna bir login kontrolü koymalısın. Örn:
Bir form tasarla ;
içinde 3 label 2 textbox 1 tane button olsun.
Label1.Text = "Kullanıcı Adı";
Label2.Text = "Şifre";
Label3. Text = "Hatalı kullanıcı adı ve şifre";
Label3.Visible = false;
şöyle bir kontrol methodu yap;
Buttonun clickeventina da bu aşağıdaki methodu ata.
public void KullaniciKontrol (string kullaniciadi, string sifre)
{
if ( kullaniciadi == "Yönetici" && sifre == "321654")
{
Form3 frm = new Form3();
frm.ShowDialog();
this.Close();
}
Else
{
Label3.Visible = true;
}
}
Diğer soruların için ise bu şekilde bir yanıt veremeyeceğim. Ne database yapını biliyorum. Nede o buttonlar nerde onları. (Ekran görüntülerinde yokda)
Ancak sana çöyle bir mantık sunabilirim.
Bir tablo oluştur. Bu tablonda kullanıcıların id leri olsun. Aynı zamanda o kullanıcıların görebileceği buttonların id leri yazsın.
Kullanıcı login olduğunda bu tablodan görebileceği button id lerini çekip formundaki tüm buttonları foreach ile dönüp id leri uyuşmayanları visible edebilirsin.
Umarım işini görür.
Saygılarımla
Burak Şentürk
Benim veritabanı yapım şu şekilde;
3 tane tablo var.
1.si kullanicilar;
kno----adisoyadi----kul_adi----parola
2.si laboratuvarlar
lno-----L_adi
3.sü yetki
yno-----kno-----lno
diye 1.de kullanıcılar var yani programı açabilecek kişiler ben adisoyadi kısmını şu yüzden ekledim hangi kullanıcı formu açarsa o kişinin adı soyadı açılan formun textinde yazacak.
2.de ise laboratuvarların adları var L_210 L_211 L_212 L_213 L_214 L_215 vb. diye
3.de ise kimin nereye yetkisi var o var.
kno kullanici tablosundan geliyor, lno laboratuvar tablosundan geliyor.
mesela
1 2 (serdar) 1 (L_210)
oluyor yani serdar isimli kullanıcı 1.laboratuvara yani l_210 u kullanmaya yetkili.
bunu oluşturdum ben mesela serdar giriş yaptığı zaman l_210 un yazılı olduğu button u kullanabilecek diğerlerine dokunamayacak.orada tıkalıp kaldım.tüm formlarımın resimlerini aşağıda vereceğim sizlere.
Bu ilk formun resmi aynı zamanda programın görüntüsü.
[url= http://i.hizliresim.com/x09Vgo.pn g" target="_blank">http://i.hizliresim.com/x09Vgo.pn g"/> [/img][/url]
bu da 2.formun resmi buraya kullanicilar tablosunu bindingsource ile bağladım giriş kısmı bu.
[url= http://i.hizliresim.com/KZmNRk.pn g" target="_blank">http://i.hizliresim.com/KZmNRk.pn g"/> [/img][/url]
Not:sanırım fark ettiniz butonları form oluşurken kendi oluşmasını sağladım yani dinamik olarak oluşturdum bu resim de de form1 in çalışma hali
[url= http://i.hizliresim.com/wbm80n.pn g" target="_blank">http://i.hizliresim.com/wbm80n.pn g"/> [/img][/url]
Gördüğünüz üzere 8 tane buton oluşuyor ve üstünde laboratuvarların isimleri yazıyor... ben ise mesela serdar isimli kullanıcı girdiği zaman sadece server,l_210 ve l_211 isimli butonları aktif görecek diğerlerini de görecek ama o butonları kullanamayacak.. bunu nasıl yapabilirim lütfen yardımcı olun Burak Bey.