2015-05-10 25 views
6

Kendo UI ızgara sütun genişliklerini programsal olarak ayarlamak istiyorum. Ancak hiçbir şey GUI değişiklikleri, sütunKendo UI kılavuz sütun genişlikleri programatik olarak nasıl ayarlanır

function setColumnWidths(grid, options) { 
    for (var i = 0; i < options.columns.length; i++) { 
     grid.columns[i].width = options.columns[i].width; 
    } 
} 

ifadeleri infaz sonrasında krom ayıklama, grid.columns [i] .width uygun yeni değere ayarlanmış gibi görünüyor: Aşağıdaki kodu kullanıyorum genişlikler aynı kalır. Neyi eksik?

cevap

3

Ben bununla sona. Dion'un çözümü, ortak grupların kullanımı hakkında bir fikre kapılmamı sağladı, ancak çözüm kilitli sütunlara sahip olmakla sınırlı değil, farklı ortak grupta.

Ayrıca dikkat: Ben grid.setOptions kullanmak istemiyorum, onun sınırlamaları (ızgara işlemek için ASP MVC yardımcı kullanarak durumunda) ekli olay ve başlık mahvediyor

function setColumnWidths(grid, options) { 
    var lockedCount = 0; 
    for (var i = 0; i < options.columns.length; i++) { 
     if (options.columns[i].hasOwnProperty('locked')) { 
      if (options.columns[i].locked) { 
       lockedCount++; 
      } 
     } 
    } 

    for (var i = 0; i < options.columns.length; i++) { 
     var width = options.columns[i].width; 
     grid.columns[i].width = width; 
     if (options.columns[i].hasOwnProperty('locked') && options.columns[i].locked) { 
      $("#grid .k-grid-header-locked").find("colgroup col").eq(i).width(width); 
      $("#grid .k-grid-content-locked").find("colgroup col").eq(i).width(width); 

     } else { 
      $("#grid .k-grid-header-wrap").find("colgroup col").eq(i-lockedCount).width(width); 
      $("#grid .k-grid-content").find("colgroup col").eq(i - lockedCount).width(width); 
     } 
    } 
    // Hack to refresh grid visual state 
    grid.reorderColumn(1, grid.columns[0]); 
    grid.reorderColumn(1, grid.columns[0]); 
} 
+0

JQuery'yi bulmak için col artık doğru olmayabilir. Ben sadece böyle bir şey yapmak zorunda kaldı ve benim bu gibi sona erdi: $ ("# ızgara .k-grid-başlık .k-grid-header-wrap") bulmak ... – Echostorm

6

Kılavuz genişliğini, tanımı yerine elemanın içinden değiştirmelisiniz. Kendo ızgarası başlık ve içerik içerir, bu yüzden iki öğeyi değiştirmeniz gerekir.

kullanın bu kod yerine

$("#grid-id .k-grid-header-wrap").find("colgroup col").eq(xx).width(yy); 
$("#grid-id .k-grid-content").find("colgroup col").eq(xx).width(yy); 

Sample

+0

teşekkürler çünkü. Bir ızgara API'si ve bunun yerine html'yi manipüle eden bir nesne modelimiz var. –

+0

Bir hatırlatma: "col" etiketlerine sahip olmadıkları için gizli sütunları atlamayı unutmayın. Bu, tüm sütunlara uygulamayı denemeniz durumunda – Gherman

İlgili konular