2012-04-02 116 views
1

我有一個檢票窗體 - 當我點擊提交 - 它顯示我從數據庫中的動態表 - 我希望表是可排序的 - 所以我用listview中繼器和表sorttable.js 能夠對錶格進行排序。Ajax重繪組件停止加載Javascripts

現在,當我refreash的頁面 - 我用的排序功能 - 但是當我點擊提交 - 我不能對錶進行排序

 wmc.add(new AttributeAppender("class", new Model("sorttable"), ";")); 
     wmc.add(new AttributeAppender("onclick", new Model("sorttable()"), ";")); 

     <table class="sortable" wicket:id="someContainer"> 

有什麼辦法 - 在那裏我可以重新加載的SortTable我.js - 而ajax重繪完成?

回答

4

這裏真正的問題是,sorttable.js(至少是我發現的版本)並非真正意圖這樣做。您可以將JavaScript調用附加到Ajax調用的結尾處。查看我的結果at github

基本上,你需要把它添加到重新加載ListView中AjaxSubmitLink:

target.appendJavaScript("sorttable.init();"); 

剩下的唯一問題是,不知何故sorttable.js防止自己不被運行兩次。所以我需要註釋掉

if (arguments.callee.done) 

檢查init()函數。我對JavaScript的知識相當有限。如果你知道更好的方法,請讓我知道。

+0

工程就像魅力的方式 - 你是偉大的 - 非常感謝 - 但我認爲我必須移動到數據表 - 有問題 - 在模型中傳遞參數以過濾DB查詢... 我應該使用數據庫表嗎?或者這個解決方案好嗎? – 2012-04-02 21:46:17

+0

如果你需要過濾,分頁,..我會去一個更先進的Wicket組件。我只是想了解一下我自己關於Wicket的javascript集成,所以我有一個去; :) – bert 2012-04-03 08:23:46

0

林不知道100%,但我認爲它不可能重新加載JavaScript內或由此ajax調用觸發。我會使用wicket框架提供的DefaultDataTable組件。它帶有對排序的支持。

+0

啊 - 那就是去我猜,但改變一切之前,我想給它一個鏡頭 – 2012-04-02 16:13:52

0

當你插入一些JavaScript,它在文件準備(jQuery的東西)來執行,你必須重新重視的事件,當你申請更改您的DOM,你可以做到這一點作爲BERT告知,或覆蓋叫renderHead的方法,

wathever便門實現表通過AJAX爲了看http://wicketstuff.org/wicket14/repeater/

+0

謝謝你的指針 - :) 我想我必須搬到Datatable最終..: -/ – 2012-04-02 21:47:23

+0

檢票口有一個很多準備使用的東西,在實現東西之前搜索一下 – osdamv 2012-04-02 22:14:44