2015-08-13 14 views
6

Tôi có một đối tượng handsontable (trên thực tế hai đối tượng, cả trong một phương thức bootstrap) có dữ liệu được tải sau khi trang được xây dựng. Dưới đây là một jsfiddle sao chép sự cố https://jsfiddle.net/mtbdeano/w7dofbyy/Chế độ xem tay ban đầu không kéo dài đến độ rộng chính xác

Bảng có kích thước quá hẹp, thậm chí tùy chọn stretchH: all. Khi tôi nhấp vào nội dung, họ thay đổi kích thước như phép thuật thành độ rộng cột chính xác. Tôi có thiếu một số tham số khởi tạo? Làm thế nào tôi có thể có kích thước cho chiều rộng chính xác sau khi tải dữ liệu mới?

/* these tables are in the modal */ 
    $('#keyword_table').handsontable({ 
    data: keyword_data, 
    rowHeaders: true, 
    colHeaders: ['Keywords'], 
    columnSorting: true, 
    contextMenu: true, 
    height: 256, 
    stretchH: "last", 
    enterBeginsEditing: false, 
    minSpareRows: 1 
    }); 

Tôi đang tải dữ liệu sử dụng mã này được gọi là trên một ajax cuộc gọi thành công:

function load_table_from_ajax(tbl, data) { 
    var $tbl = $(tbl); 
    var hot = $tbl.handsontable('getInstance'); 
    // this formats my data appropriately 
    var new_data = _.map(data, function (kw) { 
    return new Array(kw); 
    }); 
    hot.loadData(new_data); 
    /* I have tried also doing a: hot.render(); */ 
} 

Tất cả các mã có vẻ đúng theo hướng dẫn, bất kỳ ý tưởng tại sao bảng không căng/thay đổi kích thước chính xác?

Trước khi tương tác với các Handsontable, nó trông như thế này: Table is not rendered correctly nhưng sau khi nhấp vào tiêu đề hoặc thêm một giá trị: enter image description here

+0

bạn có thể đăng jsfiddle không? có thể có điều gì khác sai với mã của bạn. một điều bạn nên thử là xác định chiều rộng của bảng thực tế vì bạn không làm điều đó ở đây – ZekeDroid

+0

jsfiddle là https://jsfiddle.net/mtbdeano/w7dofbyy/ – Deano

Trả lời

1

Thử đặt số width khi khởi tạo. Vì bạn không cài đặt, stretchH có thể gặp sự cố khi thực hiện các tính toán cần thiết. Tôi đã nhìn thấy hành vi đó trước và thiết lập này thường sửa chữa nó.

+0

nhờ @ZekeDroid, nhấn phần tử HTML với chiều rộng không có tác dụng, nhưng độ rộng cột được đặt ở trên đã thực hiện thủ thuật. – Deano

+1

Không phải phần tử html, mà là bản thân khởi tạo. Trong đối tượng khởi tạo của bạn. Ngoài ra, tôi khuyên bạn nên tạo một đối tượng thay vì gắn nó vào jquery. Điều này có nghĩa là làm 'mới có thể đọc được (container, tùy chọn)' trái ngược với '$ (container) .handsontable (options)'. – ZekeDroid

+0

Vì vậy, bạn muốn thêm 'width: 100' hoặc tuy nhiên nhiều pixel bạn muốn – ZekeDroid

1

thử colWidths:[100]

Định nghĩa độ rộng cột bằng pixel. Chấp nhận số, chuỗi (số sẽ được chuyển thành số), mảng số (nếu bạn muốn xác định chiều rộng cột riêng cho mỗi cột) hoặc hàm (nếu bạn muốn đặt độ rộng cột động trên mỗi kết xuất).

+0

nhờ @FranciscoV, điều này thực sự hiệu quả, nhưng tôi ' d như thế này để đáp ứng với kích thước của vùng chứa mẹ. – Deano

+0

nó không hoàn hảo hoặc đáp ứng, nhưng nó hoạt động, cảm ơn! – Deano

Các vấn đề liên quan