несколько slickGrid на вкладках jQuery - PullRequest
7 голосов
/ 24 января 2011

Я создаю несколько slickGrids и помещаю их во вкладку jQuery.Первая slickGrid на первой вкладке jQuery работает нормально, но когда я переключаюсь на следующую вкладку, столбцы данных на slickGrid не отображаются, пока вы не измените размер заголовка, и столбцы не будут выровнены по заголовку.Есть ли способ, как я могу это исправить?Вот мой пример кода:

<ul class="tabs">
     <li><a href="#tab_1">FADF Mono</a></li>
     <li><a href="#tab_2">BADF Mono</a></li>
     <li><a href="#tab_3">BADF Color</a></li>
</ul>
<div class="tab_container">
       <div id="tab_1" class="tab_content">
          <div id="slickGrid_1"></div>
       </div>
       <div id="tab_2" class="tab_content">
          <div id="slickGrid_2"></div>
       </div>
       <div id="tab_3" class="tab_content">
          <div id="slickGrid_3"></div>
       </div>
</div>

Ответы [ 4 ]

9 голосов
/ 24 января 2011

Хорошо.Ну, я постараюсь разобрать, что происходит и почему это не работает.В основном, вероятно, вы настраиваете свои вкладки перед тем, как инициализировать свои значения slickgrid.Это важно знать, потому что ваша вторая и третья вкладки по сути имеют скрытое состояние, и поэтому ваши скользящие сетки не инициализируются.

Попробуйте изменить порядок и посмотрите, работает ли это.Если этого не произойдет, я рекомендую поместить инициализаторы slickfgrid в document.ready и инициализатор вкладок в document.load.Это немного глупо, но дает хорошие результаты.

Надеюсь, это имеет смысл.

3 голосов
/ 25 января 2011

Вы должны переместить загрузку сетки в событие "show" на вкладке jQuery. Мне пришлось использовать эти события вместо document.ready / load, потому что у меня не отображен CSS моих вкладок, чтобы удалить «флеш-вкладку», даже если это происходит сразу после загрузки страницы и инициализации вкладок. Примерно так вот что у меня есть:

    $('#tabs').tabs({
            fx: [
                    {opacity: 'toggle', duration: 'fast'},
                    {opacity: 'toggle', duration: 'fast'}
            ],
            show: function(event, ui) {
                    if($(ui.tab).text() == "grids" && !this.gloaded) {
                            grids.init();
                            this.gloaded = true;
                    }
            }
    });
1 голос
/ 20 декабря 2012

Похоже, вы, возможно, боретесь с той же проблемой, с которой я столкнулся. Поведение скрытия вкладок Jquery приводит к рендерингу slickgrid в IE и chrome FIrefox делает это хорошо. Это то, о чем я говорю - Сделайте следующую модификацию CSS jquery UI -

от

.ui-tabs .ui-tabs-hide { display: none !important; }

до

.ui-tabs .ui-tabs-hide {
    position: absolute;
    left: -10000px;
}
0 голосов
/ 24 января 2011

это в основном реконструкция кода моего jquery, этот код динамически генерируется с помощью php-кода.

    $(document).ready(function() {

    //When page loads...
    $(".tab_content").hide(); //Hide all content
    $("ul.tabs li:first").addClass("active").show(); //Activate first tab
    $(".tab_content:first").show(); //Show first tab content

    //On Click Event
    $("ul.tabs li").click(function() {

        $("ul.tabs li").removeClass("active"); //Remove any "active" class
        $(this).addClass("active"); //Add "active" class to selected tab
        $(".tab_content").hide(); //Hide all tab content

        var activeTab = $(this).find("a").attr("href"); //Find the href attribute value to identify the active tab + content
        $(activeTab).fadeIn(); //Fade in the active ID content
        return false;
    });

    });
    </script>
    <script>
var grid_1;     
var columns_1 = [           
{id:"title", name:"Title", field:"title"},          
{id:"duration", name:"Duration", field:"duration"},         
{id:"%", name:"% Complete", field:"percentComplete"},           
{id:"start", name:"Start", field:"start"},          
{id:"finish", name:"Finish", field:"finish"},           
{id:"effort-driven", name:"Effort Driven", field:"effortDriven"}        
];

var options_1 = {           
enableCellNavigation: false,          
enableColumnReorder: false      
};

$(function() {         
var data_1 = [];            
for (var i = 0; i < 500; i++) {             
data[i] = {                 
title: "Task " + i,                  
duration: "5 days",                  
percentComplete: Math.round(Math.random() * 100),                 
 start: "01/01/2009",                  
 finish: "01/05/2009",                   
effortDriven: (i % 5 == 0)             
 };         
}

grid_1 = new Slick.Grid($("#slickGrid_1"), data_1, columns_1, options_1);       
})      
</script>

<script>        
var grid_2;     
var columns_2 = [           
{id:"title", name:"Title", field:"title"},          
{id:"duration", name:"Duration", field:"duration"},         
{id:"%", name:"% Complete", field:"percentComplete"},           
{id:"start", name:"Start", field:"start"},          
{id:"finish", name:"Finish", field:"finish"},           
{id:"effort-driven", name:"Effort Driven", field:"effortDriven"}        
];      
var options_2 = {           
enableCellNavigation: false,           
enableColumnReorder: false      
};

$(function() {          
var data_2 = [];            
for (var i = 0; i < 500; i++) {             
data[i] = {                   
title: "Task " + i,                   
duration: "5 days",                  
percentComplete: Math.round(Math.random() * 100),                   
start: "01/01/2009",                  
finish: "01/05/2009",                   
effortDriven: (i % 5 == 0)              
 };         
}           
grid_2 = new Slick.Grid($("#slickGrid_2"), data_2, columns_2, options_2);       
})      
</script>

<script>        
var grid_3;     
var columns_3 = [       
{id:"title", name:"Title", field:"title"},          
{id:"duration", name:"Duration", field:"duration"},         
{id:"%", name:"% Complete", field:"percentComplete"},           
{id:"start", name:"Start", field:"start"},          
{id:"finish", name:"Finish", field:"finish"},           
{id:"effort-driven", name:"Effort Driven", field:"effortDriven"}        
];

var options_3 = {           
enableCellNavigation: false,          
enableColumnReorder: false      
};

$(function() {         
var data_3 = [];            
for (var i = 0; i < 500; i++) {             
data[i] = {                   
title: "Task " + i,                   
duration: "5 days",                   
percentComplete: Math.round(Math.random() * 100),                  
start: "01/01/2009",                  
finish: "01/05/2009",                   
effortDriven: (i % 5 == 0)               
 };         
}
grid_3 = new Slick.Grid($("#slickGrid_3"), data_3, columns_3, options_3);
})
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...