2016-05-08 9 views
5

Bir Önyükleme tablosu kullanarak elektronik tablo benzeri bir uygulama oluşturuyorum. Bir kullanıcı sütun görünürlüğünü değiştirebilir, sütun ekleyebilir/silebilir, yeniden boyutlandırabilir vb.Bir Önyükleme tablosunu üst kapsayıcısından daha geniş boyutlandırmak için nasıl zorlayabilirim?

Kullanıcı bir sütunu yeniden boyutlandırmayı seçtiğinde yatay olarak kaydırmak için tabloya ihtiyacım var. masayı ana kabın içine yerleştirin. Temel bir Bootstrap tablosu:

<div class="wrapper"> 
<table id="grid" class="table"> 
    <thead> 
    <tr> 
     <th>One</th> 
     <th>Two</th> 
     <th>Three</th> 
    </tr> 
    </thead> 

    <tbody> 
    <tr> 
     <td>Data</td> 
     <td>Data</td> 
     <td>Data</td> 
    </tr> 
    </tbody> 
</table> 
</div> 

Ve kodu (SO üzerinde user686605 kredi) yeniden boyutlandırmak için: Bu keman içinde

$(function() { 
var pressed = false; 
var start = undefined; 
var startX, startWidth; 

$("#grid").on('mousedown', 'th', function(e) { 
    start = $(this); 
    pressed = true; 
    startX = e.pageX; 
    startWidth = $(start).width(); 
    $(start).addClass("resizing"); 
    }); 

    $(document).mousemove(function(e) { 
    if (pressed) { 
     $(start).width(startWidth+(e.pageX-startX)); 
    } 
    }); 

    $(document).mouseup(function(e) { 
    if (pressed) { 
     pressed = false; 
    } 
    }); 
}); 

Demo: boyutlandırma Açık https://jsfiddle.net/xc0v6gkk/1/

, tabloyu görebilirsiniz Yeniden boyutlandırılmayan üstbilgiler, yeniden boyutlandırılan sütunun artan genişliğine sığacak şekilde küçülüyor. Bu sütunları aynı genişlikte kalmaya zorlayabileceğim ve masayı ebeveyninden daha geniş bir şekilde büyütmeye zorlayabilmem için bir yöntem var mı?

yeterince sütunlar ekleyebilir

, masa kendi üst sınırlarını aşacaktır, ancak yeniden boyutlandırma artık mümkün değildir.

Ben boyutlandırma üzerinde genişlikleri kontrol ve tablo belli bir genişliğe ulaştığında div artırmak için çalıştık, ama yine div genişliği arttıkça daha da yatay sütun sürükleyerek tutmak mümkün değildir:

$(document).mousemove(function(e) { 
    if (pressed) { 
    $(start).width(startWidth + (e.pageX - startX)); 

    var docWidth = $('.wrapper').width(), 
     gridWidth = $('#grid').width(); 

    if (docWidth - gridWidth == 15) { 
     $('.wrapper').width(docWidth + 100); 
    } 
    } 
}); 

DÜZENLEME

Ben masa taşmaya başladığında yeniden boyutlandırma çalışma durur bana neden bilmek için önemli olduğunu düşünüyorum. Yeniden boyutlandırma işlemi biraz çekicidir, ancak ayarlanabilen bir şeydir. Tablo taşırken yeniden boyutlandırmanın neden durduğunu anlamıyorum.

+0

Bunu mu arıyorsun? taşma-x: Full.C @ –

+0

boostrap tabloyu kullanmayın, gibi yerine bir css koyabilirsiniz bir sınıf kullanmak . Bununla birlikte, uygulamanın tüm Bootstrap tablolarını kullanan çeşitli modülleri vardır. Önyükleme olmayan tabloyu benzer görünecek şekilde biçimlendirmeliyim ve css becerilerim böyle bir şey için yeterince iyi değil. Bu yüzden önce Bootstrap tablosunu kullanan bir çözüm arıyorum. – Lemayzeur

+0

kaydırmak Kesinlikle ben kabul şeydir https://jsfiddle.net/xc0v6gkk/2/ –

cevap

0

Eğer istenen genişliğe yeni bir sütun eklenir her zaman yeniden boyutlandırmak için tabloya zorlayabilir. sütun genişliğini ek sütun sayısını artırabilir ve bunu başlangıç ​​genişliğine ekleyebilirsiniz.

var newCols = 0, 
    width = 160, 
    tableWidth = 400; 

$('#add-col').on('click', function(e) { 
    newCols++ 
    $('#grid').width(tableWidth + (width * newCols)); 
    $('thead tr').append('<th>Another</th>'); 
    $('tbody tr').append('<td>More</td>'); 
}); 

https://jsfiddle.net/xc0v6gkk/13/

Sen bu yer almak için ayarları ile oynamak gerekir.

+0

Cevabınız için teşekkür ederiz. Kılavuzun yeniden boyutlandırma özelliklerini dikkate almazsanız bu iyi olur. Sütun miktarı, divun taşmaya başlamasına yetecek kadar artar, yeniden boyutlandırma artık çalışmaz. –

+0

Anlıyorum, bunu düşünmeye başlıyorum, çünkü bu yeniden boyutlandırmaya neden oldu. – Sarcoma

+0

Min genişlik, tablo tablosu hücresi veya satır özelliği ile çalışmaz –