easyui datagrid 在不關閉行編輯狀況下,更新行,更新單元格。

var tmpIndex = editIndexs[rewriteTableId];
                    //獲取 主要的按鈕對象  單元格
                    var ed = $(rewriteTableId).datagrid('getEditor', {index:tmpIndex,field:"FPROJECTNUMBER"});
                    $(ed.target).textbox('setValue', rowData.FPROJECTNUMBER);
                    // 有editor的更新方法------------------------------------------------
                    $($(rewriteTableId).datagrid('getEditor', {index:tmpIndex,field:"FCREATEPROJECTID"}).target).textbox('setValue', rowData.FID);
                    // 沒有editor 的列,更新方法       --------選擇按鈕的列名---------------------------------要反寫的字段列明------------------------彈窗  選擇的 數據。
                    $(ed.target).parents("td[field='FPROJECTNUMBER']").siblings("td[field='FPROJECTNAME_L1']").find("div").html(rowData.FPROJECTNAME_L1);
                    $(ed.target).parents("td[field='FPROJECTNUMBER']").siblings("td[field='FPROJECTNAME_L2']").find("div").html(rowData.FPROJECTNAME_L2);

//更新頁面div值並不會 更新datagrid 實體值,因此調用方法更新
                    var rows = $(rewriteTableId).datagrid("getRows");
                    var columns = $(rewriteTableId).datagrid("options").columns;
                    for (i in columns[0]){
                        if(columns[0][i].field== "FPROJECTNAME_L1")
                            rows[tmpIndex][columns[0][i].field] = rowData.FPROJECTNAME_L1;
                        if(columns[0][i].field== "FPROJECTNAME_L2")
                            rows[tmpIndex][columns[0][i].field] = rowData.FPROJECTNAME_L2;

}

思路:javascript

單元格有兩種,一種是編輯控件的,一種是隻顯示的。html

一、編輯控件獲取編輯,當作textbox控件setValue便可。java

二、只供顯示的單元格,根據編輯控件對象,找到父節點的 兄弟節點,而後獲取 顯示字段的div,填入。code

可是問題是,值修改頁面元素,datagrid實體對象並無更新數據,當關閉行,或獲取數據時,是沒有變的。因此用下面的columns 和rows去更新實體對象值。至於原理我也不太懂,就是起做用,好用。哈哈htm

相關文章
相關標籤/搜索