ben

OMÜ , Bilgisayar Mühendisliği, 13'

15 Ocak 2015 Perşembe

Rad Grid ContextMenu

RadGrid işlemlerinde yaptımız grid üzerine context menu ekleyelim.

 Bunu için  projemizin kod kısmıa context menuleri tanımlayalım,

 private RadContextMenu AktifcontextMenu;
 private RadContextMenu PasifcontextMenu;

Tıklanan satırdaki belli bir alana göre menulerin olusması için ıkı farkli context menu oluşturduk, Menuler değişkenlik göstermiyorsa tek bir tane olusturmamız yeterliydi

              public void GridMenuOlustur()
        {
             AktifcontextMenu = new RadContextMenu();
            RadMenuItem Pasif = new RadMenuItem("Pasif");
            Pasif.Click += new EventHandler(Pasif_Click); 
            AktifcontextMenu.Items.Add(Pasif);
            RadMenuItem Sil = new RadMenuItem("Sil");
            Sil.Click += new EventHandler(Sil_Click); 
            AktifcontextMenu.Items.Add(Sil);

            PasifcontextMenu = new RadContextMenu();
            RadMenuItem Aktif = new RadMenuItem("Aktif");
            Aktif.Click += new EventHandler(Aktif_Click); 
            PasifcontextMenu.Items.Add(Aktif);
            RadMenuItem ASil = new RadMenuItem("Sil");
            ASil.Click += new EventHandler(Sil_Click); 
            PasifcontextMenu.Items.Add(ASil);

        }
        private void Aktif_Click(object sender, EventArgs e)
        {  
        }

        private void Sil_Click(object sender, EventArgs e)
        { 
        }

        private void Pasif_Click(object sender, EventArgs e)
        {
        }

Aktif ogrenci satırı secildiğinde context menude pasif ve sil, pasif  olan ogrenci secildiğinde aktif ve sil  menuleri gorunecek, aktif menuye tıklandiğinda pasif olan ögrenci aktif olacak, aktif menuye tıklandiğinda pasif olan ogrenci aktif olacak. ilk oncelkle datagride bu context menuyu haber vermemiz lazim gridin properties ozalliklerinden AllowCellContextMenu özelliğiniz true yapalım ve event bölümünden ContextmenuOpening'e çift tıklayalım. olusan eventin içine;

if((bool)radGridView1.Rows[radGridView1.CurrentRow.Index].Cells["isAktif"].Value == true)
    {e.ContextMenu = AktifcontextMenu.DropDown; }
 elseif((bool)radGridView1.Rows[radGridView1.CurrentRow.Index].Cells["isAktif"].Value == false)
   {e.ContextMenu =PasifcontextMenu.DropDown;}

Buradaki radGridView1.CurrentRow.Index  grid üzerinde tıklanan satırın indexini verir. 

Formun load olayına  GridMenuOlustur() ekleyip programı çalıştıralım



Gelelim aktifi pasif pasifi aktif yapmaya,yada secileni silmeye..

  private void Aktif_Click(object sender, EventArgs e)
        {
            foreach (var item in list)
            {
                if(item.OgrId==(int)radGridView1.Rows[radGridView1.CurrentRow.Index].Cells["OgrId"].Value)
                {
                    item.isAktif = true;
                }
            }
            radGridView1.DataSource= new List<denemeSurregate>();
            radGridView1.DataSource = list;

        }
  private void Pasif_Click(object sender, EventArgs e)
        {
            foreach (var item in list)
            {
                if (item.OgrId == (int)radGridView1.Rows[radGridView1.CurrentRow.Index].Cells["OgrId"].Value)
                {
                    item.isAktif = false;
                }
            }
            radGridView1.DataSource = new List<denemeSurregate>();
            radGridView1.DataSource = list;

        }



   private void Sil_Click(object sender, EventArgs e)
        {
            foreach (var item in list)
            {
                if (item.OgrId == (int)radGridView1.Rows[radGridView1.CurrentRow.Index].Cells["OgrId"].Value)
                {
                    list.Remove(item);
                }
            }
            radGridView1.DataSource = new List<denemeSurregate>();
            radGridView1.DataSource = list;
        }