2009-12-29 29 views
21

jqGrid'imin sahip olduğu satır sayısına göre daralmasını ve genişletilmesini istiyorum. Şu anda 10 satır olduğunu varsayalım, jqGrid'in yüksekliği 10 sıraya daralır (böylece boş boşluklar açığa çıkmaz).jqGrid satır sayısına göre yeniden boyutlandırın mı?

Eğer çok fazla satır varsa, ızgaranın yüksekliği maksimum 'height' değerine genişler ve bir kaydırma çubuğu görünecektir.

cevap

19

Bu, kılavuzun içine yerleştirilmiştir. height'u% 100 olarak ayarladınız. There's a demo on this page siz "Gelişmiş giderseniz -> boyutlandırma'nın

+0

3.6 bu yeni özellik mi loadComplete işlevi içinde kodunun altına ekle? Maksimum yükseklik nasıl ayarlanır? Kılavuzun da ekranın tamamını doldurmasını istemem. –

+0

Hayır, 3.6'dan daha eski. Maksimum yükseklik desteklenmez AFAIK (sınırlayıcı satır sayısı hariç); Bunun için daha fazla çalışmalı veya kaydırılabilir bir şeye koymalısınız. –

+0

Denetim numaramda olmadığı için satır sayısını sınırlayamıyorum. Ancak bu cevabı kabul ediyorum çünkü ihtiyacım kısmen karşılanıyor ve başka bir cevap yok. –

2

çağrı afterInsertRow aşağıda fonksiyonu ve bir satır silerken:

function adjustHeight(grid, maxHeight){ 
    var height = grid.height(); 
    if (height>maxHeight)height = maxHeight; 
    grid.setGridHeight(height); 
} 
5

Dene: jqGrid geri arama işlevi loadComplete yılında

jQuery(".ui-jqgrid-bdiv").css('height', jQuery("#bigset").css('height')); 

#bigset..

+0

Harika çalışıyor. Kabul edilen cevapla ilgili potansiyel bir sorun,% 100'ünün bazen öğenin dibinde adil bir alan ekleyeceğidir (sanırım başka bir şey yüksekliği etkiliyor). Bu yüksekliğin nereden geldiğini öğrenemedikten sonra, bu çözüm benim için çalıştı. – Stuart

1

Yüksekliği% 100 olmasına rağmen, bu tablo benim için id. demoda iyi ripped, benim için çalışmadı. Izgara daha büyük oldu, belki de ebeveyn divunun yüksekliğini işgal etmeye çalıştı. Amit'in çözümü benim için mükemmel çalıştı, teşekkürler! (Burada bir katkı olarak yeniyim ve bu yüzden herhangi bir oyu işaretlemek için daha yüksek bir “itibar” gerekir :))

3

Benzer problemle karşılaştım ve çözümlerin hiçbiri benim için mükemmel çalışmadı. Bazıları çalışıyor ancak kaydırma çubuğu yok. Yani burada

Yaptığım budur:

jQuery("#grid").jqGrid('setGridHeight', Math.min(300,parseInt(jQuery(".ui-jqgrid-btable").css('height')))); 

Bu kod loadComplete işleyicisi yerleştirilmelidir zorundadır ve sonra gayet iyi çalışıyor. Math.min'in ilk parametresi, listeyi doldurmak için yeterli veri olduğunda istenen yüksekliktir. Bu aynı değerin ızgara için yükseklik olarak ayarlanması gerektiğine dikkat edin. Bu komut dosyası, asıl yüksekliğin minimumunu ve ızgaranın istenen yüksekliğini seçer. Yeterli sayıda satır yoksa, ızgara yüksekliği daraltılır, aksi halde her zaman aynı yüksekliğe sahip oluruz!

1

Amit'in çözümüne dayanarak hazırladığım genel bir yöntem. Görüntülenecek maksimum satır sayısını belirtmenize izin verecektir. Maksimum yüksekliği hesaplamak için kılavuzun başlık yüksekliğini kullanır. Satırlarınız, başlığınız ile aynı yükseklikte değilse, aramaya gerek olabilir. Umarım yardımcı olur.

function resizeGridHeight(grid, maxRows) { 
    // this method will resize a grid's height based on the number of elements in the grid 
    // example method call: resizeGridHeight($("#XYZ"), 5) 
    // where XYZ is the id of the grid's table element 
    // DISCLAIMER: this method is not heavily tested, YMMV 

    // gview_XYZ is a div that contains the header and body divs 
    var gviewSelector = '#gview_' + grid.attr('id'); 
    var headerSelector = gviewSelector + ' .ui-jqgrid-hdiv'; 
    var bodySelector = gviewSelector + ' .ui-jqgrid-bdiv'; 

    // use the header's height as a base for calculating the max height of the body 
    var headerHeight = parseInt($(headerSelector).css('height')); 
    var maxHeight = maxRows * headerHeight; 

    // grid.css('height') is updated by jqGrid whenever rows are added to the grid 
    var gridHeight = parseInt(grid.css('height')); 
    var height = Math.min(gridHeight, maxHeight); 
    $(bodySelector).css('height', height); 
} 
0

var ids = grid.jqGrid('getDataIDs'); 
//setting height for grid to display 15 rows at a time 
if (ids.length > 15) { 
    var rowHeight = $("#"+gridId +" tr").eq(1).height(); 
    $("#"+gridId).jqGrid('setGridHeight', rowHeight * 15 , true); 
} else { 
//if rows are less than 15 then setting height to 100% 
    $("#"+gridId).jqGrid('setGridHeight', "100%", true); 
} 
İlgili konular