2011-07-29 11 views
6

İlk ASP.NET MVC 3 uygulamasını yapıyorum ve jqGrid'i kullanıyorum. Sütunlarımdan biri, "Lezzet Oluşturuldu", bir tarih sütundur ve bu sütunu, Tarih Çubuğu'nu kullanarak o sütuna filtrelemek istiyorum. Şu anda olan şey şu: Kullanıcı, sütun başlığı filtre kutusunu tıklar, tarih seçicisi görüntülenir ve kullanıcı yıl, ay seçer ve bir günü tıklar. Seçici kaybolur ve metin kutusuna 03/28/2009 tarihini bırakır. Filtrenin çalışmasını sağlamak için, bu kutuya tıklamam ve kullanıcı için biraz can sıkıcı olan Enter tuşuna basmam gerekiyor.jqGrid DatePicker isabetsiz süzme Enter tuşu

Kullanıcı o günü tıkladığında filtrenin otomatik olarak ateşlenmesinin bir yolu var mı?

(Bu vesileyle, ben 'Bitti' düğmesini kullanılması ben. Günde tıklayın Belki de ben eksik bir ayar olduğunda seçici uzağa gider beri için ne olduğundan emin değilim.)

Başka hiç kimse bu işleve gerek duydu ve çözdü mü? Ben önermek bazı web sitesinde birisini gördüğümüz gibi

dataInit: function (elem) { 
    $(elem).datepicker({ changeYear: true, changeMonth: true, showButtonPanel: true, 
    onSelect: function (dateText, inst) { 
     $("#icecreamgrid")[0].trigger("reloadGrid"); 
    } 
    }) 
} 

ama işe görünmüyordu:

Böyle bir şey yapmaya çalıştık.

cevap

16

Sen

dataInit: function (elem) { 
    $(elem).datepicker({ 
     changeYear: true, 
     changeMonth: true, 
     showButtonPanel: true, 
     onSelect: function() { 
      if (this.id.substr(0, 3) === "gs_") { 
       // in case of searching toolbar 
       setTimeout(function(){ 
        myGrid[0].triggerToolbar(); 
       }, 50); 
      } else { 
       // refresh the filter in case of 
       // searching dialog 
       $(this).trigger("change"); 
      } 
     }  
    }); 
} 

GÜNCELLEME ile deneyebilirsiniz: 4.3.3 jqGrid dataInit ait this olarak ızgaranın DOM başlatmak sürümü ile başlayarak. Dolayısıyla, yukarıdaki kodda myGrid değişkenini kullanmanız gerekmez. Bunun yerine birinin kullanabilirsiniz:

dataInit: function (elem) { 
    var self = this; // save the reference to the grid 
    $(elem).datepicker({ 
     changeYear: true, 
     changeMonth: true, 
     showButtonPanel: true, 
     onSelect: function() { 
      if (this.id.substr(0, 3) === "gs_") { 
       // in case of searching toolbar 
       setTimeout(function() { 
        self.triggerToolbar(); 
       }, 50); 
      } else { 
       // refresh the filter in case of 
       // searching dialog 
       $(this).trigger("change"); 
      } 
     }  
    }); 
} 

Ücretsiz jqGrid mode mülkiyet gibi ek bilgiler içerir dataInit ikinci options parametresi ile çağırır. Filtre araç çubuğunun içinde arama yapılması durumunda mode özelliğinin değeri "filter"'dır (ve arama iletişim kutusunda "search"). Bu nedenle, aşağıdaki kod

dataInit: function (elem, options) { 
    var self = this; // save the reference to the grid 
    $(elem).datepicker({ 
     changeYear: true, 
     changeMonth: true, 
     showButtonPanel: true, 
     onSelect: function() { 
      if (options.mode === "filter") { 
       // in case of searching toolbar 
       setTimeout(function() { 
        self.triggerToolbar(); 
       }, 0); 
      } else { 
       // refresh the filter in case of 
       // searching dialog 
       $(this).trigger("change"); 
      } 
     }  
    }); 
} 
+1

kodlarını kullanabilirsiniz. Teşekkürler. Esc'i vurmak GET'in gerçekleşmesine neden oluyor ama ben bununla yaşayabilirim - o kadar veriyi geri çekmiyorum. TriggerToolbar() 'ı çağırmadan önce kontrol eden bir func'i arayabilirim. – itsmatt

+1

Muhtemelen 'onSelect' içinde' onClose' içinde değil 'triggerToolbar'u çağırmanız gerekir? Hangi durumlarda araç çubuğu aramayı zorlamak istediğinizi tam olarak tanımlayabilirsiniz. Genel olarak, 'onSelect', kullanıcı yeni tarih seçerse çağrılır. – Oleg

+0

Evet, bu daha iyi çalışıyor. Best, Matt – itsmatt

İlgili konular