2012-06-25 29 views
5

Tôi đang sử dụng một plugin jQuery từ đây http://www.tablefixedheader.com/ để tạo một bảng snazzy với tiêu đề cố định, sắp xếp và các tính năng tuyệt vời khác. Bây giờ, tôi cũng đã xem xét jqGrid, trông rất tuyệt vời, nhưng chúng tôi đang làm một số điều thú vị với nguồn dữ liệu của chúng tôi và tôi không nghĩ rằng nó là khá sẵn sàng để chơi tốt với jqGrid.Làm thế nào tôi có thể thay đổi plugin jQuery của FixedTableHeader để có một cột đầu tiên cố định?

Dù sao, sếp của tôi muốn cột đầu tiên của bảng mà tôi tạo ra được sửa, để chúng có thể di chuyển trên trục x, nhưng vẫn thấy cột đầu tiên. Làm thế nào tôi có thể sửa đổi plugin này để cung cấp chức năng này?

Any help is appreciated rất

Cảm ơn

EDIT:

Tôi đã thử thêm:

th:first-child 
{ 
    position  : relative; 
} 
td:first-child 
{ 
    position  : relative; 
} 

Cũng như "cố định", nhưng nó có vẻ là phức tạp hơn giải pháp đơn giản này ...

Làm điều này không có tác dụng , nó không phải là dễ chịu. Thực hiện thay đổi này làm cho nó ở trạng thái tĩnh ở phía bên trái, nhưng tôi thực sự không thể cuộn xuống và thứ này thực sự không hoạt động.

EDIT 2:

tôi đã bắt đầu thực hiện các giải pháp đưa ra dưới đây, mặc dù tôi không hoàn toàn tự tin vào khả năng của mình để tinker với plugin này. Dù sao, đây là tình trạng hiện tại của mày mò:

tôi sẽ tiếp tục cập nhật như tôi đi ...

tôi nhận được một lỗi mà nói this.offset.top là null hoặc không phải là một đối tượng ... blah,

mã này đi trong điều document.ready:

  var currentTop = 0; 
     var currentLeft = 0; 
     var currentWidth = 0; 
     var currentHeight = 0; 
     var currentContent = ""; 
     var currentDiv = ""; 
     var currentID = ""; 
     $('td:first-child').each(function (index) { 
      currentTop = $(this).offset.top; 
      currentLeft = $(this).offset.left; 
      currentWidth = $(this).width; 
      currentHeight = $(this).height; 
      currentContent = $(this).html(); 
      currentID = "fixed_column_cell" + index; 
      currentDiv = "<div class=\"fixed_column_cells\" id=\"" + currentID + "\">" + currentContent + "</div>"; 
      $('body').append(currentDiv); 
      $('#' + currentID).offset({ top: currentTop, left: currentLeft }); 
      $('#' + currentID).width(currentWidth); 
      $('#' + currentID).width(currentHeight); 
     }); 
     $('fixed_column_cells').css('position', 'fixed'); 

Hiện nay mắc kẹt

+0

Sẽ rất khó sửa đổi plugin để thực hiện những gì bạn muốn. –

+0

Khi bạn nói rất khó, bạn nghĩ sẽ mất bao nhiêu thời gian để phát triển một nhà phát triển kỳ cựu? –

+0

Tôi tin hoàn toàn hiểu những gì plugin đang thực hiện, để triển khai tính năng này để tương thích với mọi thứ khác (phân trang, cột có thể sắp xếp, cột có thể thay đổi kích thước, v.v.) và để làm việc này trên tất cả các trình duyệt chính ngày. –

Trả lời

2

Sự cố thú vị. Tôi không nghĩ rằng bạn sẽ thấy rằng phần tử ô (TD) sẽ muốn hành xử theo cách này cho bạn. Điều cần làm có thể là lặp qua tất cả các td: first-childs và sao chép nội dung của chúng thành các div có cùng kích thước chồng lên các TD. những div đó sẽ cho phép bạn định vị chúng một cách chính xác.

Tôi nghĩ rằng bạn đang gặp phải một hạn chế về hành vi của bảng có sẵn.

Pseduocode:

  • Đối với mỗi ô trong bảng trong cột đầu tiên
  • có được vị trí hàng đầu bên trái
  • get width và height
  • tạo div mới của cùng một kích thước ở vị trí tương đương
  • bản sao nội dung vào div mới
  • đặt div thành vị trí cố định
+0

Đã thử giải pháp của bạn, nhưng không thành công cho đến nay (xem bản chỉnh sửa của tôi cho trạng thái hiện tại). Ý tưởng nghe có vẻ khá tốt! –

+0

@Silver Có vấn đề với việc sử dụng .offset. Tôi đã thêm nhận xét cho bạn ở trên. – SimplGy

0

tôi biết bạn nói rằng bạn đã nhận được thư viện jquery cho người đứng đầu cố định er. Tuy nhiên, có một số thư viện ở đó cho các cột cố định cũng như các tiêu đề. Một cái mà tôi đã sử dụng là Fixed Table cho phép bạn đặt cột bên trái cũng như tiêu đề cần sửa. Hy vọng điều này sẽ giúp bạn

+0

Phải, ngoại trừ tôi yêu các tính năng mà plugin này đã cho phép, chẳng hạn như sắp xếp. Tôi cũng đã sửa đổi với nó để thêm đánh dấu hàng tùy chỉnh dựa trên giá trị của một hàng cụ thể và như vậy. –

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