2012-12-04 18 views
5

ASP.NET WEB API'sı ile jqgrid üzerinde çalışıyorum.jqgrid'de iki altbilgi satırı oluşturma

Jqgrid'in altbilgisine iki satır eklemek istiyorum.

Bu yüzden internette biraz arama yapmak beni bu bağlantıya getirdi (2010) "Bu mümkün değil" diyor, cevabın 2010 olduğunu düşünüyorum, şu andan itibaren bir şey olabilir/bazı geçici çözümler olabilir bunun için mümkün kıldı.

Altbilgide ne göstermek isterim?

Ben iki sıra

göstermek istiyorum
  • Toplam Geçerli sayfada veri önceden tüm sayfaları mevcut veriler için
  • Genel toplam için
  • Ben verileri geçmek mümkün duyuyorum

ve verileri okuduğumuzda, bu verilerin nasıl kullanılacağı ve jqgrid'de iki altbilgi satırı oluşturulacağı sorulur.

Herhangi bir düşünce?

+0

bu bağlantıyı kontrol edin: http://stackoverflow.com/questions/7392987/jqgrid-total-amount-row –

cevap

12

Ben soru ilginç buldum, bu yüzden iki satır Altbilginin olası uygulamasından birini gösterir the demo oluşturuldu:

enter image description here

ana fikir tablosundaki ikinci satır eklemek için nerede standart altbilgi zaten mevcut. JqGrid kodunun diğer bölümleriyle ilgili olası sorunları ortadan kaldırmak için, özel satırdaki footrow sınıf adını myfootrow olarak değiştirdim. Orijinal tooter ben .ui-jqgrid tr.myfootrow td için aynı tanımlarla ui.jqgrid.css den .ui-jqgrid tr.footrow td kopyasını dahil olduğu gibi ikinci altbilgi için aynı CSS ayarlarını sağlamak için:

.ui-jqgrid tr.myfootrow td { 
    font-weight: bold; 
    overflow: hidden; 
    white-space:nowrap; 
    height: 21px; 
    padding: 0 2px 0 2px; 
    border-top-width: 1px; 
    border-top-color: inherit; 
    border-top-style: solid; 
} 

tam kod aşağıda bulacaksınız

footerrow: true, 
loadComplete: function() { 
    var $this = $(this), 
     sum = $this.jqGrid("getCol", "amount", false, "sum"), 
     $footerRow = $(this.grid.sDiv).find("tr.footrow"), 
     localData = $this.jqGrid("getGridParam", "data"), 
     totalRows = localData.length, 
     totalSum = 0, 
     $newFooterRow, 
     i; 

    $newFooterRow = $(this.grid.sDiv).find("tr.myfootrow"); 
    if ($newFooterRow.length === 0) { 
     // add second row of the footer if it's not exist 
     $newFooterRow = $footerRow.clone(); 
     $newFooterRow.removeClass("footrow") 
      .addClass("myfootrow ui-widget-content"); 
     $newFooterRow.children("td").each(function() { 
      this.style.width = ""; // remove width from inline CSS 
     }); 
     $newFooterRow.insertAfter($footerRow); 
    } 
    $this.jqGrid("footerData", "set", {invdate: "Total (page):", amount: sum}); 

    // calculate the value for the second footer row 
    for (i = 0; i < totalRows; i++) { 
     totalSum += parseInt(localData[i].amount, 10); 
    } 
    $newFooterRow.find(">td[aria-describedby=" + this.id + "_invdate]") 
     .text("Grand Total:"); 
    $newFooterRow.find(">td[aria-describedby=" + this.id + "_amount]") 
     .text($.fmatter.util.NumberFormat(totalSum, $.jgrid.formatter.number)); 
} 

Kodda, invdate sütunlarında ve altbilginin amount sütunlarında ek bilgi ayarladım.

+0

güzel cevap @Oleg, ama biraz geç .. Zaten (kirli) bir çözüm oluşturduk. İki altbilgi satırları görsel etkiye sahip bazı css kullanılan o zaman sadece bir altbilgi oluşturma ve her bir hücre etiketleri ile çevrili iki değeri vardır ve. Bu cevabı kabul ediyorum ve kodumu değiştirmek için zamanım olup olmadığını göreceğim. Bu cevap sizden sadece Oleg olmak zorundaydı, sizin tarafınızdan gönderilen tüm jqgrid cevaplarını okudum. Bütün bu cevaplar için sana teşekkür etmek istiyorum. – Yasser

+0

@Yasser: Rica ederim! – Oleg