none
gridcontrol arama sonrası view deki alanın seçili gelmemesi RRS feed

  • Soru

  • merhabalar

    formumda gridcontrol var devexpress kullanıyorum sorun şu formun loadında her şey normal 

    yanlız 

    load olayında

    gvDepo.OptionsView.ShowAutoFilterRow = true; aramayı açtım

    arama yapınca gridview de arama sonucunda çıkan listenin ilki seçilmiyor nasıl yapabilirm yardımcı olurmusunuz yoksa sürekli manuel seçmek zorundayım hataya düşmemek için

    örnek ekran görüntüleri

    bu üsteki resimde form load olayında dp01 seçili geliyor otomatik olarak

    bu üstteki resimde ise arama yapıyorum depo adına yada herhangi birisine göre aramaya başladıgımda ilk alan seçilmiyor manuel seçmek zorundayım bunun önüne nasıl geçebilirim ?

    saygılar.


    CoDeR-23

    25 Ekim 2019 Cuma 09:50

Yanıtlar

  • FocusedRowHandle olayı ile ilgili sizin işiniz. 

    Herhangi bir şey yapmadığınız zaman form yüklendiğinde Grid içerisindeki first row'a focused yapılmış oluyor varsayılanda.

    Siz AutoFilterRow özelliğini açarak bu varsayılanı iptal etmiş olmuyorsunuz, yine varsayılanda ilk satır seçili geliyor. Fakat arama yapmak için herhangi bir kolonun altındaki arama satırına click yaptığınız anda FocusedRow devreden çıkıyor.

    Siz arama bölümüne birşeyler yazdığınızda yine aşağıda ilk satırdaki row'un seçili olmasını istiyorsunuz.

    Sorunu çözmek için arama yaptığınız yere tıklandığı anda devreye giren bir kod yazmalısınız. Belki daha farklı metodlar bulabilirsiniz fakat benim gördüğüm view eventları altında bulunan ColumnFilterChanged event'ı.

    Buna çift tıklayarak açılan kod bloğu içerisine aşağıdaki kodu yazarak son halini şu şekle getirmeniz gerekiyor.

    private void gridView1_ColumnFilterChanged(object sender, EventArgs e)
            {
                //MessageBox.Show("Deneme");
    
                GridView view = sender as GridView;
                BeginInvoke(new Action(() =>
                {
                    view.FocusedRowHandle = 0;
                }));  
            }

    Bu şekilde sorununuz çözülüyor. Fakat burada şöyle bir sorun çıkıyor. Siz yukarıdaki kod ile aslında arama kısmında değişiklik olduğu anda alttaki gridde ilk satırı seç (mouse ile tıkla) yapmış oluyorsunuz. Dolayısıyla bu kodu yazdıktan sonra arama bölümüne ilk harfi yazar yazmaz mouse ilk satırı tıklamış oluyor. Siz klavyeden ne yazarsanız yazın arama satırına yazamamış oluyorsunuz. Mouse ile yeniden arama satırına gelmeniz gerekiyor...

    Yapmak istediğinizin mantığını pek anlamadım aslında. Bırakın kullanıcı seçsin çıkan sonuçlardan birini. Siz niye arama sonucu çıkan ilk satırı illa otomatik seçtirmek istiyorsunuzki ?


    • Düzenleyen XentoX 27 Ekim 2019 Pazar 09:17
    • Yanıt Olarak İşaretleyen TurkMvc 27 Ekim 2019 Pazar 15:04
    27 Ekim 2019 Pazar 09:16

Tüm Yanıtlar

  • bilgisi olan yokmudur acaba ?

    yoksa uyarı verdirip duruyorum her işlemde tüm formlarda


    CoDeR-23

    25 Ekim 2019 Cuma 15:16
  • konu güncel halen çözüm bulamadım:S

    CoDeR-23

    26 Ekim 2019 Cumartesi 17:19
  • FocusedRowHandle olayı ile ilgili sizin işiniz. 

    Herhangi bir şey yapmadığınız zaman form yüklendiğinde Grid içerisindeki first row'a focused yapılmış oluyor varsayılanda.

    Siz AutoFilterRow özelliğini açarak bu varsayılanı iptal etmiş olmuyorsunuz, yine varsayılanda ilk satır seçili geliyor. Fakat arama yapmak için herhangi bir kolonun altındaki arama satırına click yaptığınız anda FocusedRow devreden çıkıyor.

    Siz arama bölümüne birşeyler yazdığınızda yine aşağıda ilk satırdaki row'un seçili olmasını istiyorsunuz.

    Sorunu çözmek için arama yaptığınız yere tıklandığı anda devreye giren bir kod yazmalısınız. Belki daha farklı metodlar bulabilirsiniz fakat benim gördüğüm view eventları altında bulunan ColumnFilterChanged event'ı.

    Buna çift tıklayarak açılan kod bloğu içerisine aşağıdaki kodu yazarak son halini şu şekle getirmeniz gerekiyor.

    private void gridView1_ColumnFilterChanged(object sender, EventArgs e)
            {
                //MessageBox.Show("Deneme");
    
                GridView view = sender as GridView;
                BeginInvoke(new Action(() =>
                {
                    view.FocusedRowHandle = 0;
                }));  
            }

    Bu şekilde sorununuz çözülüyor. Fakat burada şöyle bir sorun çıkıyor. Siz yukarıdaki kod ile aslında arama kısmında değişiklik olduğu anda alttaki gridde ilk satırı seç (mouse ile tıkla) yapmış oluyorsunuz. Dolayısıyla bu kodu yazdıktan sonra arama bölümüne ilk harfi yazar yazmaz mouse ilk satırı tıklamış oluyor. Siz klavyeden ne yazarsanız yazın arama satırına yazamamış oluyorsunuz. Mouse ile yeniden arama satırına gelmeniz gerekiyor...

    Yapmak istediğinizin mantığını pek anlamadım aslında. Bırakın kullanıcı seçsin çıkan sonuçlardan birini. Siz niye arama sonucu çıkan ilk satırı illa otomatik seçtirmek istiyorsunuzki ?


    • Düzenleyen XentoX 27 Ekim 2019 Pazar 09:17
    • Yanıt Olarak İşaretleyen TurkMvc 27 Ekim 2019 Pazar 15:04
    27 Ekim 2019 Pazar 09:16
  • şöyle diyeyim normalde mantıklı olan kullanıcının seçmesi ama burada hiç bilmeyip te bu prıogram bozuk dediklerinde sinir kat sayım olmasın diye yani

     başka bi sebebi yok teşekjkürler hocam.


    CoDeR-23

    27 Ekim 2019 Pazar 14:07
  • şöyle diyeyim normalde mantıklı olan kullanıcının seçmesi ama burada hiç bilmeyip te bu prıogram bozuk dediklerinde sinir kat sayım olmasın diye yani

     başka bi sebebi yok teşekjkürler hocam.


    CoDeR-23

    Allah kolaylık versin...

    İşten anlamayan adama program yazmanın ne kadar zor olduğunu çok iyi bilirim. 

    Saçma sapan istekleri asla bitmez...

    27 Ekim 2019 Pazar 18:24