2011-10-30 16 views
5

Add jqgrid'e yeni satır eklemek için araç çubuğu düğmesi kullanılır. Görüntülenen form, boş dosyalanmış tüm boşlukları içerir. Ekleme komutu verildiğinde geçerli/seçili satırın sütun değerlerinden form alanı değerleri nasıl eklenir? json uzak veri kullanılır. Veya bu daha basitse, sunucudan form eklemek için varsayılan değerleri almak için sunucu yöntemini geçerli/seçili satır geçirme yöntemi nasıl çağırılır? jqgrid ayrıca gizli sütunlar da içerir. Geçerli satırdaki gizli sütunlardan olası değerler, form eklendiğinde ekleyici eklemek için de gönderilmelidir.Geçerli satırdan jqgrid biçiminde form eklemek için varsayılan alan değerleri nasıl ayarlanır

Güncelleme

Ben

  afterShowForm: function(formID) { 
      var selRowData, 
       rowid = grid.jqGrid('getGridParam', 'selrow'); 
      if (rowid === null) { 
      // todo: how to cancel add command here 
      alert('Please select row'); 
      return; 
      } 

      selRowData = grid.jqGrid('getRowData', rowid); 
      if (selRowData === null) { 
      alert('something unexpected happened'); 
      return; 
      } 

      $('#' + 'Baas' + '.FormElement', formID).val(selRowData.Baas); 
      } 

Uygulama kullanarak Oleg harika öneri kullanmaya çalıştı kaydettikten sonra açık şekli ekleyin tutar. İlk kaydetme işleminden sonra Baas alanı boş. AfterShowForm olayı, her kayıttan sonra değil, yalnızca bir kez çalışır. Bu nasıl düzeltilir, böylece varsayılan değerlere sahip birden çok satır kapanış formu olmadan eklenebilir mi? Seçili satır yoksa ekleme komutuna nasıl izin verilir veya verilmez?

cevap

4

yalnızca en az iki yaklaşım uygulanabilir Ekleme formu için bazı başlatma işlemleri yapmanız gerekirse:

  • editoptions iç fonksiyonu olarak defaultValue özelliğinin kullanımı. Geri arama işlevi defaultValue, seçili satırdaki verilere dayanarak Form ekle'nin ilgili alanına ilişkin değeri sağlayabilir. Optimizasyon amacıyla, mevcut seçili satırdaki verileri bir kez beforeInitData geri arama/olayında okuyabilirsiniz. İhtiyacınız olan bilgiyi almak için ihtiyacınız olan verileri okuyabilir veya sunucuya senkronize bir çağrı yapabilirsiniz. defaultValue özelliğinin kullanılmasının tek dezavantajı, 'Ekle' edittype istisnasıyla tüm form Ekle formunun varsayılan değerini ayarlamak için jQuery.val yöntemini kullanmasıdır. Onay kutuları için jqGrid, false, 0, no, off, veya undefined onay kutusunun işaretli işaretini, defaultValue özelliği tarafından döndürülen değerde bulunmaz. Bu yüzden yaklaşım diğer edittipler için çalışmaz. Örneğin, custom edittype için başarısız olabilir.
  • beforeShowForm veya afterShowForm kullanımı. Geri arama fonksiyonlarının içinde, formun herhangi bir değerini ayarlayabilirsiniz. İlgili sütunun ilgili sütununun dosyalamasını, ilgili sütunun name özelliğinin değeriyle aynı alanın kimliğini kullanarak bulabilirsiniz. Sizin gibi

zaten getGridParam saygı ile seçilen geçerli satırın id almak ve grid ana seçer $('#list') gibi jQuery nesnesidir seçili satır

var selRowData, rowid = grid.jqGrid('getGridParam', 'selrow'); 
if (rowid !== null) { 
    // a row of grid is selected and we can get the data from the row 
    // which includes the data from all visible and hidden columns 
    selRowData= grid.jqGrid('getGridParam', 'selrow'); 
} 

veri alabilir bilir Kılavuzun <table> öğesi.

the demo'da yukarıda açıklanan ilk yaklaşımın nasıl çalıştığını görebilirsiniz.

+0

Teşekkür ederiz. Bazı durumlarda, büyük arama tablolarından yabancı anahtar girişi için kullanılan jqueryUI otomatik tamamlama alanları için varsayılan değerler ayarlamanız gerekir.Otomatik tamamlama, özel düzenleme öğesi olarak uygulanır. Lütfen onaylayın, bu durumda beforeShowForm'u kullanmanın en iyi yolu nedir? Varsayılan değerlerin ayarlanması için iki yöntemin karıştırılmasından kaçınmak için diğer alanlardan önce de forhowForm kullanılmalı mıyız? Ekleme formunda jqueryui otomatik tamamlama alanının varsayılan değerini ayarlayan örnek kod nerede bulunur? Yanıt örnekte – Andrus

+0

kod örneği grid.jqGrid ('getGridParam', 'selrow'); iki kez – Andrus

+0

@Andrus: Size ne diyeceğimi söyleyemem * en iyisi *. Birçok parametreye bağlı olabilir. jQuery UI Autocomplete 'source' size sunucudan veri alabilmeniz için birçok olanak sunar, bu yüzden kendiniz için hangi yolun * sizin ortamınız için en iyisi olduğunu * seçmelisiniz. Her ikisinin de iyi bir şekilde uygulanabileceği iki yol tarif ettim. – Oleg

İlgili konular