1. 程式人生 > >dataGrid的combobox改變,輸入框值隨之變化

dataGrid的combobox改變,輸入框值隨之變化

在datagrid初始載入後,點選雙擊編輯,根據一個輸入框的下拉選擇,改變另一個輸入框的值。有關的頁面展示如下
這裡寫圖片描述
下面是有關的程式碼:

var line;//定義一個全域性變數,在雙擊編輯的時候,將編輯行的索引賦值給該變數
var pipingLevel = [{"value":"0","text":"體育用品"},{"value":"1","text":"生活用品"},{"value":"2","text":"食品"}];
//json格式,下拉框的格式內容,可以通過後臺查詢,也可以在前臺直接定義
grid = $("#hg").datagrid({//分配儲位的右邊的關聯庫位的展示
            url : 'manager.do?method=getStoragelocation&id='
+ id, fit : true, rownumbers : true, singleSelect : false, selectOnCheck : true, checkOnSelect : true, toolbar : '#tb', columns : [ [ { field : 'id', checkbox : true }, { field : 'goodsName'
, title : '商品明細', width : 150, align : 'center', editor : { type : 'combobox', options : { precision : 2, validType : 'number', editable : false
//將輸入框變成不能編輯的狀態 } } }, { field : 'goodsType', title : '商品型別', width : 80, align : 'center', formatter : function(val, row, index) { if (val == 0) { return "體育用品"; } else if (val == 1) { return "生活用品"; } else if (val == 2) { return "食品"; } }, editor:{ type: 'combobox', options: { data: pipingLevel, valueField: "value", textField: "text", editable: false, panelHeight:70, required: true, onChange:function(k,v){ //k是新的值,v是初始值 var lineInfo = $('#hg').datagrid('getData').rows[line]; var productName = lineInfo.goodsnumber; var editors = $('#hg').datagrid('getEditors', line);//取當前的編輯器 var row = $('#hg').datagrid('getRows')[line]; var smEditor = editors[1]; $(smEditor.target).combobox('clear'); //根據下拉選擇的值傳送ajax查詢有關的資料,將資料載入到變化的輸入框中 $.ajax({ type : "POST", url : 'manager.do?method=changeKw', data : { goodsnumber :productName, type:k }, success : function(data) { var str=[]; var s = ""; if(data.length != 0){ for ( var i = 0; i < data.length; i++) { s = {"value":data[i].librarynum,"text":data[i].librarynum}; str.join(","); str.push(s); } } //var str = [{"value":data[0].librarynum,"text":data[0].librarynum}]; var editors = $('#hg').datagrid('getEditors', line);//取當前的編輯器 var row = $('#hg').datagrid('getRows')[line]; var smEditor = editors[0];//獲得datagrid的第一個編輯框(庫位程式碼) $(smEditor.target).combobox("loadData", str); $(smEditor.target).combobox('select', data[0].librarynum);//選項框預設顯示第一條 } }); } } } } ] ], //雙擊編輯事件 onDblClickRow : function(rowIndex, rowData) { var data = $('#hg').datagrid('getData'); //最後一行取消編輯 //雙擊開啟編輯行 if (editval != rowIndex) { line=rowIndex; $("#hg").datagrid('refreshRow',rowIndex); $('#hg').datagrid("endEdit", editval); $('#hg').datagrid("beginEdit", rowIndex); editval = rowIndex; //在雙擊事件中,將改變方法重新載入一下,當雙擊編輯時,資料就能直接載入 $.ajax({ type : "POST", url : 'manager.do?method=changeKw', data : { goodsnumber :rowData.goodsnumber, type:rowData.kuweitype }, success : function(data) { console.info(data); var str=[]; var s = ""; if(data.length != 0){ for ( var i = 0; i < data.length; i++) { s = {"value":data[i].librarynum,"text":data[i].librarynum}; str.join(","); str.push(s); } } //var str = [{"value":data[0].librarynum,"text":data[0].librarynum}]; var editors = $('#hg').datagrid('getEditors', line);//取當前的編輯器 var row = $('#hg').datagrid('getRows')[line]; var smEditor = editors[0];//獲得datagrid的第一個編輯框(庫位程式碼) $(smEditor.target).combobox("loadData", str); $(smEditor.target).combobox('select', data[0].librarynum);//選項框預設顯示第一條 } }); } else { editval = undefined; $('#hg').datagrid("endEdit", rowIndex); } }, });