GridView'de sorting işlemi yaparken seçilmiş olan satır bilgisini tutmak

Sorting ve selection özelliklerini beraber kullandığınız zaman, hoşunuza gidmeyecek bir durum ile karşı karşıya kalabiliyorsunuz. Peki nedir bu hoş olmayan,hatta baş ağrıtan durum; bir satırı seçtiğiniz zaman ve daha sonra  sorting işlemi yaptıgınızda, sorting ile oluşan yeni sıralamada seçtiğiniz satır seçiliyor.

Örneğin, üçüncü satırı sorting yapmadan önce seçmişseniz ve daha sonra sorting yapmışsanız yeni oluşan sıralamada üçüncü satır seçilmiş gibi davranacaktır.Seçmediğiniz bir değer seçili gibi görünecektir. Seçtiğimiz satır bilgisinde değişiklik olmaması için bir kaç işlem yapmamız gerekmektedir.

GridVeiw sort işlemini tamamlandığında seçilmiş olan satırı temizliyoruz.

 protected void grvMusteri_Sorted
          (object sender,
           EventArgs e)
          {
            grvMusteri.SelectedIndex = -1; 
          }

Seçilmiş olan değeri ViewState de saklıyoruz

protected void grvMusteri_SelectedIndexChanged
         (object sender,
          EventArgs e)
         {

          if (grvMusteri.SelectedIndex != -1)
          {
            ViewState["SecilenDeger"] =
             grvMusteri.SelectedValue.ToString();
   
          }
         } 

Sort işleminden sonra veri yeniden bağlanırken, seçilmiş olan belirliyoruz

protected void grvMusteri_DataBound
         (object sender,
          EventArgs e)
         {
   if (ViewState["SecilenDeger"] != null)
          {
            string selectedValue =
           (string)ViewState["SecilenDeger"];

           foreach (GridViewRow row in grvMusteri.Rows)
           {
             string keyValue =
              grvMusteri.DataKeys[row.RowIndex].Value.ToString();

             if (keyValue == selectedValue)
      {
       grvMusteri.SelectedIndex = row.RowIndex;
              return;
             }
           }
          }

Kaynak :PRO ASP.NET 3.5


Okunma Sayısı:435 11.24.2009