我遇到了一些我正在繼承的使用DataTables和過濾器功能的項目問題。使用DataTable識別已過濾的行
的問題是,在其中填充表的主要功能,它具有以下代碼:
var rowPos = mainTable.fnAddData(tableData, false)[0];
var rowData = mainTable.fnSettings().aoData[rowPos];
$(rowData.nTr).attr("id", "UID" + id); // Since the id doesn't always match the row
rowData.ID = id;
現在我知道,3號線是幾乎無用的,除非fnAddData的「假」的說法被設置爲'true'。這是因爲當設置爲'false'時,HTML元素實際上不存在於DOM中,因此無法設置'id'屬性。
我不能使用'true',因爲當向表中添加幾百行時,它會在大約4秒內渲染表格。但是當我使用「假」時,它幾乎是瞬間呈現(不到一秒)。所以在'fnAddData()'中使用'true'標誌甚至不是一個選項。
我看到最後一行似乎在做某些事情,但我試圖在DataTables網站上找到相關文檔,但似乎找不到任何有價值的東西。我假設它允許某人綁定一個UID(唯一記錄ID)到實際的行號,這是必需的。
我的代碼也使用了「fnRowCallback」,它試圖在這個時候設置「id」屬性,如:
var id = mainTable.fnSettings().aoData[tablePos].ID;
$(row).attr("id", "UID" + id); // Since the id doesn't always match the row
的主要問題是,它似乎並沒有工作!如果我應用一個表格過濾器並有意濾除除了應該是'UID'3的記錄以外的所有記錄,在'fnRowCallback'中,我的'id'變量被設置爲0.因此,該屬性集合總是'UID0'各種不良的參考。
有沒有辦法將我的數據庫記錄ID正確地分配給錶行?然後再引用它們,比如在'fnRowCallback'函數中?還是有人設法找出其他一些詭計?
在此先感謝您的時間和迴應!
更新:2012.11.01 12:33 - 我已經根據各種調查結果添加了以下答案!