Jump to content

muratboy31

Üye
  • Posts

    391
  • Joined

  • Last visited

Posts posted by muratboy31

  1. ilginçtir, false true ya dönmüyor ama, true değeri false yapınca çalışıyor !!!

    normalde ben create olayında hepsini false yapıp sonra yetkiye göre true yapıyordum ancak bu şekilde ştemler true olmuyordu ama hepsini create te true yapınce yetkilere göre false çalışıyor.

  2. bende buna benzer bi yapı kullandım ancak 0 - 1 değilde, eğer nesne adı var ise visible yapıyor. tek tek bütün nesnelere 0 - 1 girmek zor gibi geldi...

     

    benim anlamadığım Itemler hariç herşeyin visible olması... birtek Itemler sorun çıkarıyor !!!

     

    Sonuç:

    2luur8m.jpg

     

     

     

     

    30x95hx.jpg

     

    stored procedure :

    PROCEDURE [dbo].[sp_Auth](@username varchar(30))
    AS
    BEGIN
    	select * from dbo.[Auth] where UserName = @username 
    END
    

    c#:

            public void Create_Navbar()
            {
                SqlConnection mycon = new SqlConnection();
                SqlCommand mycommand = new SqlCommand();
                SqlDataAdapter adp = new SqlDataAdapter(mycommand);
                DataTable Group = new DataTable();
                DataTable Item = new DataTable();
    
                try
                {
                    mycon.ConnectionString = Connect;
                    mycon.Open();
                    // grupları al
                    mycommand.Connection = mycon;
                    mycommand.CommandText = "sp_Navbar_Group_Creation";
                    mycommand.CommandType = CommandType.StoredProcedure;
                    adp.Fill(Group);
                    // itemleri al
                    mycommand.Connection = mycon;
                    mycommand.CommandText = "sp_Navbar_Item_Creation";
                    mycommand.CommandType = CommandType.StoredProcedure;
                    adp.Fill(Item); 
                }
                catch (Exception e)
                {
                    MessageBox.Show(Convert.ToString(e));
                }
                finally
                {
                    mycon.Close();
                }
    
    
                foreach (DataRow gRow in Group.Rows)
                {
                    string ItemGrupID = gRow["GroupID"].ToString();
                    string ItemGrupName = gRow["GroupName"].ToString();
    
                    // grupları oluştur
                    NavBarGroup NavGroup = new NavBarGroup();
                    NavGroup.Caption = ItemGrupName;
                    NavGroup.Name = ItemGrupID;
                    NavGroup.Expanded = true;
                    NavGroup.Visible = false;
                    navBarControl2.Groups.Add(NavGroup);
    
                    // itemleri oluştur
                    foreach (DataRow iRow in Item.Rows)
                    {
                        string ItemID = iRow["ItemID"].ToString();
                        string ItemName = iRow["ItemName"].ToString();
                        string ItemGroup = iRow["GroupID"].ToString();
                        string TypeID = iRow["TypeID"].ToString();
                        string ItemLink = iRow["ItemLink"].ToString();
    
                        if (ItemGrupID == ItemGroup)
                        {
                            NavBarItem navItem = new NavBarItem();
                            navItem.Name = ItemID;
                            navItem.Caption = ItemName;
                            navItem.Tag = ItemLink;
                            navItem.LinkClicked += new NavBarLinkEventHandler(navBarItem_LinkClicked);
                            navItem.Visible = false;
                            NavGroup.ItemLinks.Add(navItem);
                        }
                    }
                }
            }
    
    
            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_Auth";
                    mycommand.CommandType = CommandType.StoredProcedure;
                    mycommand.Parameters.Add("@username", SqlDbType.NVarChar, 30);
                    mycommand.Parameters["@username"].Value = user;
    
                    DataTable Auth = new DataTable();
                    adp.Fill(Auth);
    
                    foreach (DataRow Row in Auth.Rows) 
                    { 
                            foreach (NavBarGroup NavGrup in navBarControl2.Groups)
                            {
                                if (NavGrup.Caption == Row["FormName"].ToString())
                                {
                                    NavGrup.Visible = true;
                                    NavGrup.Expanded = true;
                                }
                            }
                            foreach (NavBarItem NavItem in navBarControl2.Items)
                            {
                                if (NavItem.Caption == Row["FormName"].ToString())
                                    NavItem.Visible = true;
                            }
                            foreach (DevExpress.XtraTab.XtraTabPage Tab in xtraTabControl1.TabPages)
                            {
                                if (Tab.Text == Row["FormName"].ToString())
                                    Tab.PageVisible = true;
                            }
                    }      
                }
                catch (Exception e)
                {
                    MessageBox.Show(Convert.ToString(e));
                }
                finally
                {
                    mycon.Close();
                }
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
                Create_Navbar();
                Yetki("Murat");
            }
    
  3. örneği biraz daha açabilir misin lütfen pairs

     

    ben caption ile yapıyorum nesne bilgilerini, tag a ID bilgilerini giriyorum...

     

    anlam veremediğim, Gruplar visible oluyor ancak grupların içindeki Itemler visible olmuyor !!!

  4. PROCEDURE [dbo].[sp_Auth](@username varchar(30))
    AS
    BEGIN
    	select * from dbo.[Auth] where UserName = @username 
    END
    

    Murat    Apple
    Murat    Isprots
    Mustafa    SapTec
    Mustafa    Kısayollar
    Mustafa    Araçlar
    Murat    Araçlar
    Murat    SapTec
    Murat    Ipros
    Murat    Vtekone
    Murat    Rehber
    Mustafa    Qdmss
    Murat    Klasörler
    Mustafa    Ekler

  5. Teşekkürler Kintaro

    Gruplar ve itemler neden visible olmuyor acaba !
     
    [spoiler]

            public void Create_Navbar()
            {
                SqlConnection mycon = new SqlConnection();
                SqlCommand mycommand = new SqlCommand();
                SqlDataAdapter adp = new SqlDataAdapter(mycommand);
                DataTable Group = new DataTable();
                DataTable Item = new DataTable();
    
                try
                {
                    mycon.ConnectionString = Connect;
                    mycon.Open();
                    // grupları al
                    mycommand.Connection = mycon;
                    mycommand.CommandText = "sp_Navbar_Group_Creation";
                    mycommand.CommandType = CommandType.StoredProcedure;
                    adp.Fill(Group);
                    // itemleri al
                    mycommand.Connection = mycon;
                    mycommand.CommandText = "sp_Navbar_Item_Creation";
                    mycommand.CommandType = CommandType.StoredProcedure;
                    adp.Fill(Item); 
                }
                catch (Exception e)
                {
                    MessageBox.Show(Convert.ToString(e));
                }
                finally
                {
                    mycon.Close();
                }
    
    
                foreach (DataRow gRow in Group.Rows)
                {
                    string GrupID = gRow["GroupID"].ToString();
                    string GrupName = gRow["GroupName"].ToString();
    
                    // grupları oluştur
                    NavBarGroup NavGroup = new NavBarGroup();
                    NavGroup.Caption = GrupName;
                    NavGroup.Name = GrupID;
                    NavGroup.Expanded = true;
                    NavGroup.Visible = false;
                    navBarControl2.Groups.Add(NavGroup);
    
                    // itemleri oluştur
                    foreach (DataRow iRow in Item.Rows)
                    {
                        string ItemID = iRow["ItemID"].ToString();
                        string ItemName = iRow["ItemName"].ToString();
                        string ItemGroup = iRow["GroupID"].ToString();
                        string TypeID = iRow["TypeID"].ToString();
    
                        if (GrupID == ItemGroup)
                        {
                            NavBarItem navItem = new NavBarItem();
                            navItem.Name = ItemID;
                            navItem.Caption = ItemName;
                            navItem.Tag = TypeID;
                            navItem.LinkClicked += new NavBarLinkEventHandler(navBarItem_LinkClicked);
                            navItem.Visible = false;
                            NavGroup.ItemLinks.Add(navItem);
                        }
                    }
                }
            }
    
    
            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, 30);
                    mycommand.Parameters["@username"].Value = user;
    
                    DataTable Auth = new DataTable();
                    adp.Fill(Auth);
    
                    foreach (DataRow Row in Auth.Rows) 
                    { 
                            foreach (NavBarGroup NavGrup in navBarControl2.Groups)
                            {
                                if (NavGrup.Caption == Row["FormName"].ToString())
                                    NavGrup.Visible = true;
                            }
                            foreach (NavBarItem NavItem in navBarControl2.Items)
                            {
                                if (NavItem.Caption == Row["FormName"].ToString())
                                    NavItem.Visible = true;
                            }
                    }      
                }
                catch (Exception e)
                {
                    MessageBox.Show(Convert.ToString(e));
                }
                finally
                {
                    mycon.Close();
                }
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
                Create_Navbar();
                Yetki("Murat");
            }
    

    [/spoiler]

  6. Merhaba arkadaşlar,

     

    dinamik bir Navbar yapmak istiyorum, iki adet tablo oluşturdum, biri Navbar Grupları için diğeri Navbar Grup İtemleri için, yapmak istediğim;

     

    tablo dan grupları çekip navbar oluştursun ve sonrasında bu grupların içinde itemleri oluştursun, eşleşmeleri GroupID lerle yapacam. GroupID leri Tag larda tutabilirim gibi geliyor. Kodlama tarafında karmaşa içindeyim, yardımcı olabilecek arkadaş varsa çok sevinirm.

     

     

    121ekqq.jpg

  7. ama stored procedure return sadece integer veri döndürür, select ile alman lazım tarihi.

    cmd.ExecuteNonQuery();
    if (cmd.Parameters["@t"].Value == DBNull.Value)      
        return (DateTime)cmd.Parameters["@t"].Value;
    else
        return DateTime.Now;
    
  8. 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
    
  9. 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.

  10. 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;
                        }   
                    }     
    
    
  11. 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;
                            }
                    }      
    
  12. 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 ?

     

    1zfoqcm.jpg

  13. 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;
                            }
                        }                   
                    }      
    
  14. resimleri daha önce farklı formatta alıyordum ama bmp yapınca convert etmek zorunda kalmadığı için arada dağlar fark etti ;

    ayrıca backgroundWorker kullanacaksanız, runtime oluşturduğunuz objeleri invoke etmeniz gerekiyor... aşağıda örneği var...

    private void GetImages()
            {
              string path = @"Images";
              string[] filter = { ".bmp" };
              DirectoryInfo directoryInfo = new DirectoryInfo(path);
              FileInfo[] fileInfo = directoryInfo.GetFiles();
              ArrayList arrayList = new ArrayList();
    
    
              foreach (FileInfo fi in fileInfo)
                foreach (string s in filter)
                    if (s == fi.Extension)
                        arrayList.Add(fi.FullName);
    
              for (int i = 0; i < arrayList.Count; i++)
              {
                Image img = Image.FromFile(arrayList[i].ToString());
                photoList.Images.Add(Path.GetFileNameWithoutExtension(arrayList[i].ToString()), img);
              }
              
            }
    
    private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
            {
              Employees();
              try
              {
                  mycon.ConnectionString = Connect;
                  mycon.Open();
                  mycommand.Connection = mycon;
                  mycommand.CommandText = "sp_List_Offices";
                  mycommand.CommandType = CommandType.StoredProcedure;
                  mycommand.ExecuteNonQuery();
    
                  using (SqlDataReader rdr = mycommand.ExecuteReader())
                  {
                      while (rdr.Read())
                      {
                          int L_OfficeID = rdr.GetInt32(0);
                          string L_OfficeName = rdr.GetString(1);
                          string L_OfficeCode = rdr.GetString(2);
                          XtraTabPage tab = new XtraTabPage() { Text = L_OfficeName };
    
                          Invoke((MethodInvoker)delegate
                          {
                              xtraTabControl1.TabPages.Add(tab);
                          });
    
                          ImageListBoxControl listBox = new ImageListBoxControl() { Name = "lb_Employee_" + Convert.ToString(L_OfficeID) };
                          listBox.Dock = DockStyle.Fill;
                          listBox.ItemHeight = 40;
                          listBox.ImageList = photoList;
                          listBox.MouseClick += new MouseEventHandler(listBox_MouseClick);
    
                          var result = L_Employee.Where(a => a.OfficeID == L_OfficeID);
                          foreach (var r in result)
                          {                          
                              string nVal = r.Name + " " + r.Surname + "\r\n" + r.Title;
                              Invoke((MethodInvoker)delegate
                              {
                                  listBox.Items.Add(new ImageListBoxItem(nVal, "", photoList.Images.IndexOfKey(r.EmployeeID.ToString()), r.EmployeeID));
                              });
                          }
                          Invoke((MethodInvoker)delegate
                          {
                              tab.Controls.Add(listBox);
                          });
                      }
                      rdr.Close();
                  }
              }
              catch (Exception a)
              {
                  MessageBox.Show(Convert.ToString(a));
              }
              finally
              {
                  mycon.Close();
              }
            }
    
  15. Background worker ile çalışıyor ama yinede uzun sürüyor yüklemesi, acaba itemleri tek tek nasıl eklerim, yane hepsinin eklenmesini beklemesin ekleneni göstersin listede...

     

    760 item 5 daikada yüklendi :)

  16. bu şekilde çalışıyor ancak, çok yavaş...

    Task.Factory.StartNew(() => {listBox.Items.Add(new ImageListBoxItem(nVal, "", photoList.Images.IndexOfKey(r.EmployeeID.ToString()), r.EmployeeID)); });
    

    sistemde 776 kayıt bulunuyor !

×
×
  • Create New...