datagrid 內嵌 combotree 顯示 valueField 而不是 valueText 的解決辦法

問題描述:獲取部門樹,從數據庫中返回的數據格式爲{id: text:},其中id爲部門ID,text爲部門名稱。在 datagrid 中 unitName(部門名稱,下拉選)爲  combotree  類型。當編輯某一行時,選擇相應部門名稱,但是結束行編輯時該列字段顯示的是  【部門ID】 而不是 【部門名稱】。


1)在 部門下拉樹  中選擇  銷售部



2)選擇之後會在  部門下拉樹  中顯示  銷售部


3) 但是當結束改行編輯時(endEdit),部門下拉樹 就會顯示 【 部門ID】  而不是  【部門名稱】



解決方法:

1  定義全局變量 unitName

//接收部門下拉樹的部門名稱
var unitName = undefined;

2  在  部門下拉樹  中的 onSelect  時間中爲 unitName 賦值

					{field:'receivablesUnitName',title:'回款部門',width:100,
						editor:{
							type:'combotree',
							options:{
								required:true,
								valueField : 'id',
								textField : 'text',
								data : unitList,
								panelHeight:"auto",
								onSelect : function(record){
									var edUnitId = $("#receivablesRecordsDatagrid").datagrid('getEditor',{
										index : lastEditRowIndex,
										field : 'receivablesUnitId',
									});
									$(edUnitId.target).val(record.id);
									//爲 unitTreeName賦值
									unitTreeName = record.text;
								
								}
							}
						},
//						formatter : function(value,row,index){
//							if(row.eventId != undefined && row.eventId.length > 15){
//								return value;
//							}else{
//								return unitTreeName;
//							}
//						}
					},

3  在OnEndEdit 事件中 爲 部門下拉樹  賦值顯示

		onEndEdit : function(index,row){
			if(unitTreeName == undefined){
				$("#receivablesRecordsDatagrid").datagrid('getRows')[index]['receivablesUnitName'] = unitTreeName;
			}
		}

解決結果圖:




除了這種方法,還可以通過 formatter 來解決這樣的問題。因爲無論是加載數據與編輯結束時datagrid都會執行formatter函數,所以我們可以用它來輸出我們想要的內容。這種方法已經寫出,處在贅述,但是當記錄表中已經存在數據時,需要做一個判斷,這裏通過 eventId 來區分是數據庫中已經存在記錄還是新增的記錄(在這裏已存在的 eventId 是一個長度爲38位的字符串,新增的 eventId 是一個長度爲4的字符串)


總結:

1) formatter 無論加載數據或編輯結束都會執行

2) onEndEdit  事件 與 onAfterEdit 事件的不同

3)getEditor 只能對正在編輯的行起作用,當某一行已經結束編輯,getEditor 獲取的值爲 null

4)爲 datagrid 中某一行的某一列賦值 ,可以通過以下語句

$("#receivablesRecordsDatagrid").datagrid('getRows')[index]['receivablesUnitName'] = unitTreeName;

index爲行號, receivablesUnitName爲列名

5)  onSelect 中 record 保存的是  combobox 所選擇的數據  id  和  text  值


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章