DataGrid關於button的相關操作

這兩天做相關設計,需要使用grid,遇到一些問題,解決了,把經驗寫下來,與大家共勉!


實現目標內容會根據引入數據不同而出現不同的button,發現當直接寫入value:<button></button>這種形式時,grid.cell會直接將起解釋爲文本,而不會翻譯爲html語言,查找資料後,引入formatter可以解決這個問題,使用formatter調用函數,在函數裏定義一個包含button的string語句,return這個str,就可以在表格裏動態生成相應的button。


不過在button動態點擊後,彈出dialog,發現執行一次後,點擊button無法在關聯相應事件,使用很多方法後都無效。因爲對button事件動態處理需要當前button下item,使用dojo.query鏈接事件時可以滿足條件,但成功執行後無法再次關聯事件,是這種方法不可取。而之前<input Onclick>方式卻無法動態獲得當前button的item。這種矛盾使程序一度陷入僵局(當然前提是使用datagrid)。最後查找資料,發現forrmate:function的調用方式傳入參數可以有兩個,當直接些formatter:fun1時,fun1(datum)中datum僅爲field的值,但formatter:this.fun1時,fun1(item,datum),item爲行號,使用getitem(item)可獲得當前操作對象,datum仍未datum的值,可解決之前遇到的問題。


再給大家貼一下常用的griddata操作符:useGrid = new dojox.grid.DataGrid({【目標store】},‘id’);

useGrid._arrayOfTopLevelItems:得到所有的item

widget.selection.getSelected():得到選中情況下的item具體操作:    var items = usermanagerGrid.selection.getSelected();
    if (items.length) {
        dojo.forEach(items, function(selectedItem) {
            if (selectedItem !== null) {
                //alert(selectedItem.text);
                //
                var deleteid = usermanagerGrid.store.getValues(selectedItem, "id");
                deletemysql(deleteid);

                ukeymanagerGrid.store.setValue(selectedItem,'fieldname',newvalue);//改變某個item中cell的值

                useGrid.store.newItem(newItem);//添加信item

                useGridStore.deleteItem(selectedItem);//刪除item


            }
        });
    }

//着下面是對formatter條用函數的引用

function func1(datum,item){
    if(datum==值)
    {
        //var str="<button class='info' >create</button>";  //這是舊的方式
        var str="<input type='button' value='create' οnclick='new function(){createdialog("+item+");}'>";//可連續調用的方式
        return str;
    }

}

這算是主要的問題點,記下來,下次再遇到就能解決爲題了!



發佈了17 篇原創文章 · 獲贊 0 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章