muratboy31 Posted October 19, 2015 Share Posted October 19, 2015 Arkadaşlar merhaba, kullandığım bir yetki tablosu var ve bu tabloda true false değerleri var, ancak ben false değerini kaldırıp sadece true varsa aktif olsun istiyorum, aşağıdaki kod true false olarak çalışıyor, bunu sadece true da çalışacak şekilde nasıl daha kısa yaparım ; DataTable dtable = new DataTable(); adp.Fill(dtable); foreach (DataRow Satir in dtable.Rows) { if (bool.Parse(Satir["Ac"].ToString()) == false) { foreach (DevExpress.XtraNavBar.NavBarGroup Grup in navBarControl1.Groups) { if (Grup.Caption == Satir["Form_Adi"].ToString()) Grup.Visible = false; } foreach (DevExpress.XtraNavBar.NavBarItem subitem in navBarControl1.Items) { if (subitem.Caption == Satir["Form_Adi"].ToString()) subitem.Visible = false; } foreach (DevExpress.XtraTab.XtraTabPage Tab in xtraTabControl1.TabPages) { if (Tab.Text == Satir["Form_Adi"].ToString()) Tab.PageVisible = false; } } if (bool.Parse(Satir["Ac"].ToString()) == true) { foreach (DevExpress.XtraNavBar.NavBarGroup Grup in navBarControl1.Groups) { if (Grup.Caption == Satir["Form_Adi"].ToString()) Grup.Visible = true; } foreach (DevExpress.XtraNavBar.NavBarItem subitem in navBarControl1.Items) { if (subitem.Caption == Satir["Form_Adi"].ToString()) subitem.Visible = true; } foreach (DevExpress.XtraTab.XtraTabPage Tab in xtraTabControl1.TabPages) { if (Tab.Text == Satir["Form_Adi"].ToString()) Tab.PageVisible = true; } } } Quote Link to comment Share on other sites More sharing options...
KintaRo Posted October 19, 2015 Share Posted October 19, 2015 (edited) yanlış anlamadıysam şöyle olabilir: private void button1_Click(object sender, EventArgs e) { DataTable dtable = new DataTable(); adp.Fill(dtable); foreach (DataRow Satir in dtable.Rows) { if (bool.Parse(Satir["Ac"].ToString()) == true) { Kontrol(true, Satir["Form_Adi"].ToString()); break; } } } void Kontrol(bool deger, string formAdi) { foreach (DevExpress.XtraNavBar.NavBarGroup Grup in navBarControl1.Groups) { if (Grup.Caption == formAdi) Grup.Visible = deger; } foreach (DevExpress.XtraNavBar.NavBarItem subitem in navBarControl1.Items) { if (subitem.Caption == formAdi) subitem.Visible = deger; } foreach (DevExpress.XtraTab.XtraTabPage Tab in xtraTabControl1.TabPages) { if (Tab.Text == formAdi) Tab.PageVisible = deger; } } } eğer değer true ise kontrolleri görünür yapar ve döngüyü break ile durdurur. not: Kontrol() methodunda değişiklik yaptım, en son hali ile deneyiniz. Edited October 19, 2015 by KintaRo Quote Link to comment Share on other sites More sharing options...
muratboy31 Posted October 19, 2015 Author Share Posted October 19, 2015 (edited) Döngüyü durdurmak istemiyorum ama, istediğim eğer true ise yetki olsun, yada true false değilde mesela kullanıcının karşısında hangi nesnelerin ismi varsa onlar aktif olsun... Daha kolay yada etkili bir örnek varsa o da olabilir ! mesela 1 veya 0 değilde, onun yerine sadece form adı olanlar aktif olsun, bunu nasıl yapabilirim ? Edited October 19, 2015 by muratboy31 Quote Link to comment Share on other sites More sharing options...
KintaRo Posted October 19, 2015 Share Posted October 19, 2015 "kullanıcının karşısında hangi nesnelerin ismi varsa" demişsin, bunları veritabanında bir sütunda mı tutuyorsun? yapıyı anlat bize, bir de tam olarak ne yapmak istediğini açarsan daha çok yardımcı olabiliriz Quote Link to comment Share on other sites More sharing options...
muratboy31 Posted October 19, 2015 Author Share Posted October 19, 2015 bu şekilde ; Quote Link to comment Share on other sites More sharing options...
KintaRo Posted October 19, 2015 Share Posted October 19, 2015 Yani Mustafa kişisinin Form_Adi sutunundaki değer Kisayollar ise if (Grup.Caption == "Kisayollar") Grup.Visible = true; bu şekilde mi olacak? Quote Link to comment Share on other sites More sharing options...
muratboy31 Posted October 19, 2015 Author Share Posted October 19, 2015 (edited) evet, form_adi olan sütun o nesneye yetkisi olduğunu gösteriyor, dediğin gibi eğer orada caption varsa visible olacak, yoksa olmayacak... aşağıdaki gibi denedim ama olmadı ; DataTable dtable = new DataTable(); adp.Fill(dtable); foreach (DataRow Satir in dtable.Rows) { foreach (DevExpress.XtraNavBar.NavBarGroup Grup in navBarControl1.Groups) { if (Grup.Caption == Satir["Form_Adi"].ToString()) Grup.Visible = true; } foreach (DevExpress.XtraNavBar.NavBarItem subitem in navBarControl1.Items) { if (subitem.Caption == Satir["Form_Adi"].ToString()) subitem.Visible = true; } foreach (DevExpress.XtraTab.XtraTabPage Tab in xtraTabControl1.TabPages) { if (Tab.Text == Satir["Form_Adi"].ToString()) Tab.PageVisible = true; } } Edited October 19, 2015 by muratboy31 Quote Link to comment Share on other sites More sharing options...
KintaRo Posted October 19, 2015 Share Posted October 19, 2015 private void button1_Click(object sender, EventArgs e) { DataTable dtable = new DataTable(); adp.Fill(dtable); foreach (DataRow Satir in dtable.Rows) { Kontrol(Satir["Form_Adi"].ToString()); } } void Kontrol(string formAdi) { foreach (DevExpress.XtraNavBar.NavBarGroup Grup in navBarControl1.Groups) { if (Grup.Caption == formAdi) Grup.Visible = true; else Grup.Visible = false; } foreach (DevExpress.XtraNavBar.NavBarItem subitem in navBarControl1.Items) { if (subitem.Caption == formAdi) subitem.Visible = true; else subitem.Visible = false; } foreach (DevExpress.XtraTab.XtraTabPage Tab in xtraTabControl1.TabPages) { if (Tab.Text == formAdi) Tab.PageVisible = true; else Tab.PageVisible = false; } } Quote Link to comment Share on other sites More sharing options...
muratboy31 Posted October 19, 2015 Author Share Posted October 19, 2015 (edited) bu şekilde yaptım ama olmadı ! ; DataTable dtable = new DataTable(); adp.Fill(dtable); foreach (DataRow Satir in dtable.Rows) { foreach (DevExpress.XtraNavBar.NavBarGroup Grup in navBarControl1.Groups) { if (Grup.Caption == Satir["Form_Adi"].ToString()) Grup.Visible = true; else Grup.Visible = false; } foreach (DevExpress.XtraNavBar.NavBarItem subitem in navBarControl1.Items) { if (subitem.Caption == Satir["Form_Adi"].ToString()) subitem.Visible = true; else subitem.Visible = false; } foreach (DevExpress.XtraTab.XtraTabPage Tab in xtraTabControl1.TabPages) { if (Tab.Text == Satir["Form_Adi"].ToString()) Tab.PageVisible = true; else Tab.PageVisible = false; } } Edited October 19, 2015 by muratboy31 Quote Link to comment Share on other sites More sharing options...
KintaRo Posted October 19, 2015 Share Posted October 19, 2015 SQL sorgusu kişiye özel mi? Yani sorgu şu şekilde mi: "SELECT * FROM kayitlar WHERE Kisi_Adi='Mustafa'" Quote Link to comment Share on other sites More sharing options...
muratboy31 Posted October 19, 2015 Author Share Posted October 19, 2015 stored procedure kullanıyorum; select * from dbo.[Yetki] where Kisi_Adi = @username ancak diğer türlü çalışıyor, yane true ve false olarak, ben her item için false girmek istemediğim için bunu yapmak istiyorum. Quote Link to comment Share on other sites More sharing options...
KintaRo Posted October 19, 2015 Share Posted October 19, 2015 NavBar'a 5 grup koydum, Grupları default olarak Visible = false şekilde ayarladım ve şu kodu çalıştırdığımda eşleşenleri visible yaptı. private void button1_Click(object sender, EventArgs e) { DataTable dtable = new DataTable(); dtable.Columns.Add("ID"); dtable.Columns.Add("Kisi_Adi"); dtable.Columns.Add("Goster"); dtable.Columns.Add("Form_Adi"); dtable.Rows.Add("1", "Murat", "1", "Kısayollar"); dtable.Rows.Add("2", "Murat", "1", "Home"); dtable.Rows.Add("3", "Murat", "1", "Diğer"); dtable.Rows.Add("4", "Mustafa", "0", "Pc"); dtable.Rows.Add("5", "Mustafa", "1", "Kısayollar"); dtable.Rows.Add("6", "Mustafa", "0", "Araçlar"); dtable.Rows.Add("7", "Murat", "1", "Araçlar"); dtable.Rows.Add("8", "Murat", "1", "Pc"); dtable.Rows.Add("9", "Murat", "1", ""); dtable.Rows.Add("10", "Murat", "1", ""); dtable.Rows.Add("11", "Murat", "0", ""); dtable.Rows.Add("12", "Mustafa", "1", ""); dtable.Rows.Add("13", "Mustafa", "1", ""); dtable.Rows.Add("14", "Mustafa", "0", ""); dtable.Rows.Add("15", "Mustafa", "1", ""); foreach (DataRow Satir in dtable.Rows) { if (Satir["Kisi_Adi"].ToString() == "Murat") { foreach (DevExpress.XtraNavBar.NavBarGroup Grup in navBarControl1.Groups) { if (Grup.Caption == Satir["Form_Adi"].ToString()) { Grup.Visible = true; } } } } } Quote Link to comment Share on other sites More sharing options...
muratboy31 Posted October 19, 2015 Author Share Posted October 19, 2015 (edited) Kafayı yicem, ben çalıştıramadım bir türlü ; stored procedure: ALTER PROCEDURE [dbo].[sp_Yetki_Listele](@username varchar(50)) AS BEGIN select * from dbo.[Yetki] where Kisi_Adi = @username END Edited October 19, 2015 by muratboy31 Quote Link to comment Share on other sites More sharing options...
KintaRo Posted October 19, 2015 Share Posted October 19, 2015 Kardeş else Visible = false yapma, hata orda. Kontrollerin property lerinden false olarak ayarla tasarım esnasında. Sadece veri eşleşmesinde true yap. sanırım şöyle: [spoiler] public void Yetki(string user) { SqlConnection mycon = new SqlConnection(); SqlCommand mycommand = new SqlCommand(); SqlDataAdapter adp = new SqlDataAdapter(mycommand); try { mycon.ConnectionString = Connect; mycon.Open(); mycommand.Connection = mycon; mycommand.CommandText = "sp_Yetki_Listele"; mycommand.CommandType = CommandType.StoredProcedure; mycommand.Parameters.Add("@username", SqlDbType.NVarChar, 20); mycommand.Parameters["@username"].Value = user; DataTable dtable = new DataTable(); adp.Fill(dtable); foreach (DataRow Satir in dtable.Rows) { foreach (DevExpress.XtraNavBar.NavBarGroup Grup in navBarControl1.Groups) { if (Grup.Caption == Satir["Form_Adi"].ToString()) Grup.Visible = true; } foreach (DevExpress.XtraNavBar.NavBarItem subitem in navBarControl1.Items) { if (subitem.Caption == Satir["Form_Adi"].ToString()) subitem.Visible = true; } foreach (DevExpress.XtraTab.XtraTabPage Tab in xtraTabControl1.TabPages) { if (Tab.Text == Satir["Form_Adi"].ToString()) Tab.PageVisible = true; } } } catch (Exception e) { MessageBox.Show(Convert.ToString(e)); } finally { mycon.Close(); } } [/spoiler] olmazsa pm ile team id at bakalım. Quote Link to comment Share on other sites More sharing options...
muratboy31 Posted October 19, 2015 Author Share Posted October 19, 2015 Peki mesela formu kapatmadan başka bir kullanıcının yetkisi test ettiğimde nasıl yapacam, aktif nesneler halen visible kalacak ! Quote Link to comment Share on other sites More sharing options...
KintaRo Posted October 19, 2015 Share Posted October 19, 2015 sende kodların başına Grup1.Visible = false; Grup2.Visible = false; şeklinde önce grupları ya da kontroller neyse onların hepsinin (döngü ile de olabilir) görünürlüğünü false yaparsın, sonra kodları çalıştırdığın zaman tamamdır. Quote Link to comment Share on other sites More sharing options...
muratboy31 Posted October 19, 2015 Author Share Posted October 19, 2015 hmm, evet olabilir dediğin gibi, aslında ben hardcode olarak bişey eklemek istemiyorum, başka bir formül bulmaya çalışırım... teşekkğrler kintaro Quote Link to comment Share on other sites More sharing options...
muratboy31 Posted December 17, 2015 Author Share Posted December 17, 2015 Arkadaşlar merhaba, enum ve sql ile form üzerinde yetki kodlaması nasıl yapılır acaba ? Yani yetkiyi forma verecek ve eğer o yetkiler varsa kullanıcı form üzerindeki yetkisi ollduğu kadar görebilecek nesneleri ! Böyle bişey mümkün mü onu da bilmiyorum gerçe, çünkü bütün nesnelere ayrı ayrı yetki vermek çok uzun iş gibi. [Flags] public enum Yetki { Ekleme = 1, Silme = 2, Degistirme = 4 } Quote Link to comment Share on other sites More sharing options...
Editor pairs Posted December 17, 2015 Editor Share Posted December 17, 2015 Enumla yapılır pc başına geçince bi örnek hazırlar atarım. Quote Link to comment Share on other sites More sharing options...
muratboy31 Posted December 17, 2015 Author Share Posted December 17, 2015 çok teşekkürler pairs Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.