2017-03-27 12 views
0

ロックされた要素がいくつかあるグリッドを使用しています。 cssを使用してグリッドの最小高さと最大高さを設定しました。剣道フリーズ(ロック)グリッドの高さ

.k-grid-content { 
    max-height: 400px; 
    min-height: 0px; 
    } 

ロックされたグリッドの高さの設定に問題があります。グリッドの高さを設定しないと、ロックされた側の行が白くなります。 グリッドの高さをどのように動的に設定するのですか?

は、これは、我々がこれはハックであり、それはグループのように完璧に動作しないOnboundイベント

var grid = e.sender; 
var lockedContent = grid.wrapper.children(".k-grid-content-locked") 
var content = grid.wrapper.children(".k-grid-content"); 

if (content[0] && (content[0].scrollWidth == content[0].clientWidth)) 
    lockedContent.height(content.height()); 
else 
    lockedContent.height(content.height()-16); 
//16 is near to horizontal scroll height 
grid.resize(); 

に持っているものです。 このリンクを完了しました http://docs.telerik.com/kendo-ui/controls/data-management/grid/how-to/Layout/change-grid-height-when-using-frozen-columns グリッドには高さが設定されていないと仮定しているため動作しません。

適切な解決策を提供してください。

答えて

1

私はあなたがそれはあなたのシナリオ

http://dojo.telerik.com/eSava/2

のために働くかどうかを確認するために試してみるための道場を準備している私が行っているすべてはあなたのためのすべての面倒な作業を行う関数を作成しています。

function initializeGrid(options) 
{ 
    if(options === null || options === undefined) 
    { 
     options = { 
      size: 0.55, 
      gridContentCss: ".k-grid-content", 
      gridLockedContentCss: ".k-grid-content-locked", 
      gridsToResize:[] 
     }; 
    } 


    var windowHeight = $(window).height() * options.size; 

    if(options.gridsToResize !== null && options.gridsToResize.length > 0) 
    { 
     options.gridsToResize.forEach(function (item) { 
      var gridContent = $('#' + item + ' > ' + options.gridContentCss); 


      var lockedContent = $('#' + item + ' > ' + options.gridLockedContentCss); 


      // console.log(gridContent, lockedContent); 

      gridContent.height(windowHeight); 

      if (lockedContent !== null && lockedContent !== undefined) { 
       lockedContent.height(windowHeight); 

      } 
     }); 
    } 
    else 
    { 
     var gridContent = $(options.gridContentCss); 
     var lockedContent = $(options.gridLockedContentCss); 

     gridContent.height(windowHeight); 

     if (lockedContent !== null && lockedContent !== undefined) { 
      lockedContent.height(windowHeight); 

     } 
    } 

    $(window).resize(function() { 
     ResizeGrid(options); 
    }); 

} 

この状態では、すべてのグリッドをウィンドウの高さの55%にリサイズします。

しかし、あなたはそうのような単純な変数を提供することにより、あなたができる別のサイジングルールを適用する場合:

var gridResize = { 
      size: 0.4, 
      gridContentCss: ".k-grid-content", 
      gridLockedContentCss: ".k-grid-content-locked", 
      gridsToResize:['grid'] 
      } 


initializeGrid(gridResize); 

ので、上記の例では、それはデフォルトを上書きし、利用できるのは40%に、グリッドのサイズを変更画面サイズ。さらに、グリッドのIDでコントロールのサイズを変更するだけです。だから、画面上に複数のグリッドがあった場合、それらの機能は単独で機能し、高さを維持します。

問題があれば教えてください。

+0

大きな説明!しかし、私のシナリオはちょっと違っていて、おそらくもっとシンプルです。基本的にすべてのグリッドに対して、.k-grid-content {max-height:400px; min-height:0px;}したがって、データが少ない場合はすべてのグリッドが自動的にサイズ変更され、サイズが大きいデータの場合は400pxサイズにページ分割されます。ロックを使用するグリッドの1つでは、同様の動作が必要です。しかし、それはグリッドの高さを設定する必要があるので、プログラム的に設定しようとしています。私は上で使用されているコードを提供していますが、正しく動作しません。恐らく、スクロールバーの高さは16と仮定しているので間違っています。 –

+0

オプションとしてパーセンテージまたはピクセルの高さを使用できるように、 //dojo.telerik.com/eSava/5現在、ピクセルの高さがコンテンツ部分にのみ適用されていることに注意してください。調整する場合は、グリッド全体が400pxの最大の高さに設定されているので、グループ化/ページャーなど –

+0

高さは可変ではありません。レコードが少ない場合、グリッドを調整する必要があります。固定された高さが必要な場合は、グリッドの作成中に高さ(たとえば400)それは一見うまく動作します。凍結しなければグリッドの高さは、最小化と最大化の間で変化し、フリーズドグリッドで達成したいのと同じです。しかし、いくつかのケースでは高さを与えないと、グリッドのフリーズした部分が一番下に白くなります。 –