2012-04-24 152 views
0

我正在使用tablesorter與MVC 3和html helpers填充每個循環,通過對象中的項目循環內的列。這工作正常,我的HTML表格正在填充我想要的方式。但我有一個問題排序的員工姓名,這是在表中的第二列,它看起來像這樣:jQuery tableSorter不排序前兩行

   <td class="reviewedEmployee"> 
        @Html.TextBox("Employees", item.FirstName + " " + item.LastName, new { style = "width:auto !important; text-align:center;" }) 
       </td> 

當我點擊了「員工」稱號,這是正確的格式使用表分揀機,沒有排序發生。但是當我點擊另一列時,如「審閱者列表」(它是來自選擇列表的@ Html.ListBox),它按該列進行排序。我可以再次點擊「員工」標題,它會進行更改,但它們不是按字母順序排列的(名字+姓氏)。還排序第一列,「年」,這只是顯示無論是2011年或2012年

這裏不工作是我的JS:

$(document).ready(function() { 
     $('table.tablesorter').tablesorter({ textExtraction: 'complex' }) 
      .tablesorterPager({ container: $("#pager"), size: $(".pagesize option:selected").val() }); 
}); 

我試圖在擺脫空間的「員工「列數據,我從tablesorter中刪除了」textExtaction「屬性。任何其他想法?

UPDATE:我的表中的數據輸入的標籤,所以我需要找出如何按值排序,可能通過增加tablesorter.AddParser()方法返回一個裏面輸入.VAL細胞()標籤。

+0

請添加表格的一些呈現HTML ... – powtac 2012-04-25 16:36:02

+0

請參閱我的答案以下我的修復。我並沒有最終需要@ Html.TextBoxFor(),只是用@ item.property去獲得一個原始的HTML文本字段。如上所述,我的表具有正確的語法,但tablesorter似乎並不喜歡在對value屬性進行排序時呈現的輸入標記。我確實爲tablesorter創建了一個自定義分析器,以便對value屬性進行排序,但它仍然無效。 – 2012-04-25 20:10:38

回答

0

而不是使用輸入由剃刀視圖呈現的標記,我使用HTML助手從數據庫中獲取名字和姓氏,該名字在表格中以原始文本形式出現。出於某種原因,tablesorter無法排序任何有輸入的行。

修復:添加一個隱藏字段與設置爲可見字段值的值相同。

我的修復程序:獲得原始文本後,我實現了我自己的自定義解析器設置,按姓氏對列進行排序。

$.tablesorter.addParser({ 
    id: "lastName", 
    is: function (s) { 
     return false; 
    }, 
    format: function (s) { 
     ret = s.split(' '); 
     return ret[ret.length-1] 
    }, 
    type: "text" 
}); 

另外,我補充span標籤到原始的HTML給風格和其他屬性,如在jQuery的選擇時,新的數據提交更新表的類。見下:

 //if data is changed, trigger an update on the text boxes to make sure filtering is up to date. 'allocation' is any dynamic field in a row such as textbox 
    $(".allocation").change(function() { 
     $("#manageReviewsTable").trigger("update"); 
     $("#manageReviewsTable").trigger("appendCache"); 
    }); 

如有任何疑問,下方評論!