Easyui Datagrid 的Combobox 如何动态修改下拉选项,以及值的转换
我是先将下拉选项的值通过datagrid的url查出来了,在每一行的row中
//项目结果选项卡的列表
$('#project_table').datagrid({
width : '100%',
height: '378',
url : 'getSeparationProjectInf',
//title : '待分发条码列表',
striped : true,
nowrap : true,
rownumbers : true,
singleSelect : true,
showHeader : true,
showFooter : false,
loadMsg : '努力展开中...',
scrollbarSize:0,
fitColumns : true,
checkOnSelect : true,
onClickRow: function (rowIndex, rowData) {
//$(this).datagrid('unselectRow', rowIndex);
var _this = this;
if (editIndex != undefined && editIndex != rowIndex) {
//结束行编辑
endEdit(_this,editIndex);
}
$(_this).datagrid('beginEdit', rowIndex);
$("input.datagrid-editable-input").on("keypress",function(e){
if(e.keyCode==13){
endEdit(_this,editIndex);
}
});
editIndex = rowIndex;
},
onBeginEdit: function(index, rowData){ //动态修改检测结果下拉项
var resultDictionaryDetailList = rowData.resultDictionaryDetailList
//监测结果下拉框
var goEditor = $('#project_table').datagrid('getEditor', {
index : index,
field : 'result'
});
$(goEditor.target).combobox({
onLoadSuccess: function () {
if(rowData.result){
$(goEditor.target).combobox('setValue', rowData.result);
}else{
$(goEditor.target).combobox('setValue', rowData.resultDictionaryDetailList[0].id);
}
},
onBeforeLoad: function(){ //下拉展开时动态修改options
if(resultDictionaryDetailList.length){
var data = [];
for ( var index in resultDictionaryDetailList) {
var resultDictionaryDetail = resultDictionaryDetailList[index];
data.push({'id': resultDictionaryDetail.id, 'name':resultDictionaryDetail.name});
}
$(goEditor.target).combobox("loadData", data);
}
}
});
},
columns : [[
{
field : 'ck',
checkbox: true
},
{
field : 'projectId',
title : '项目ID',
align : 'center',
sortable : false,
resizable : false,
hidden: true
},
{
field : 'projectName',
title : '项目',
align : 'center',
sortable : false,
resizable : false,
width : 120
},
{
field : 'data',
title : '检测数据',
align : 'center',
sortable : false,
resizable : false,
width : 100,
editor:{
type:'text'
}
},
{
field : 'result',
title : '检测结果',
align : 'center',
sortable : false,
resizable : false,
width : 100,
formatter: function (value, rowData, rowIndex) {
var resultDictionaryDetailList = rowData.resultDictionaryDetailList;
if(!value){
rowData.result = resultDictionaryDetailList[0].id;
value = resultDictionaryDetailList[0].name;
}
console.log("resultDictionaryDetailList.length=="+resultDictionaryDetailList.length);
for (var i = 0; i < resultDictionaryDetailList.length; i++) {
if (resultDictionaryDetailList[i].id == value) {
return resultDictionaryDetailList[i].name;
}
}
return value;
},
editor:{
type:'combobox',
options:{
valueField:'id',
textField:'name',
//method:'get',
//url:'products.json',
//data: resultDictionaryDetailList,
data: [{
productid: '0',
checkResult: '高'
},{
productid: '1',
checkResult: '低'
}],
required:true
}
}
},
{
field : 'remark',
title : '结果备注',
align : 'center',
sortable : false,
resizable : false,
width : 120 ,
editor : {type:"text"}
},
{
field : 'suggestion',
title : '建议内容',
align : 'center',
sortable : false,
resizable : false,
width : 150,
editor:{ type:'text' }
},
{
field : 'explanation',
title : '医学解释',
align : 'center',
sortable : false,
resizable : false,
width : 150,
editor:{ type:'text' }
},
{
field : 'reason',
title : '常见原因',
align : 'center',
sortable : false,
resizable : false,
width : 150,
hidden: true
},
{
field : 'operate',
title : '操作',
align : 'center',
sortable : false,
resizable : false,
width : 80,
formatter: function(value,row,index){
// return '<a href="javascript:void(0);" onclick="cancelDialog(event)">'+value+'</a>';
}
}
]],
data : [
/*{
project : 'ERCC1基因表达',
checkData : '≥3.4%',
checkResult : '高',
resultRemark : 'xxxxx',
advise : '您患2型糖尿病的基因位.....',
medicalExplanation : '合理安排休息,保证充分....',
operate : '删除',
}*/
],
pagination : false,
/*pageSize : 10,
pageList : [10],
pageNumber : 1,*/
pagePosition : 'bottom',
remoteSort : false,
});
具体解析如下:
onBeginEdit是将row中的下拉项数据拿出来并动态加载到Combobox 中,onBeforeLoad很重要,不然执行onLoadSuccess方法的时候,Combobox还没有动态加载下拉选项,导致显示的是值,而不是值对应的名,所以用onBeforeLoad可以先加载Combobox的下拉选项,然后再回填值
onBeginEdit: function(index, rowData){ //动态修改检测结果下拉项
var resultDictionaryDetailList = rowData.resultDictionaryDetailList
//监测结果下拉框
var goEditor = $('#project_table').datagrid('getEditor', {
index : index,
field : 'result'
});
$(goEditor.target).combobox({
onLoadSuccess: function () {
if(rowData.result){
$(goEditor.target).combobox('setValue', rowData.result);
}else{
$(goEditor.target).combobox('setValue', rowData.resultDictionaryDetailList[0].id);
}
},
onBeforeLoad: function(){ //下拉展开时动态修改options
//datatype处理统计方法
if(resultDictionaryDetailList.length){
var data = [];
for ( var index in resultDictionaryDetailList) {
var resultDictionaryDetail = resultDictionaryDetailList[index];
data.push({'id': resultDictionaryDetail.id, 'name':resultDictionaryDetail.name});
}
$(goEditor.target).combobox("loadData", data);
}
/* //设置值
if(rowData.result){
$(goEditor.target).combobox('setValue', rowData.result);
}else{
$(goEditor.target).combobox('setValue', rowData.resultDictionaryDetailList[0].name);
}*/
}
});
},
formatter是将值转换成对应的name
formatter: function (value, rowData, rowIndex) {
var resultDictionaryDetailList = rowData.resultDictionaryDetailList;
if(!value){
value = resultDictionaryDetailList[0].id;
rowData.result = value;
}
for (var i = 0; i < resultDictionaryDetailList.length; i++) {
if (resultDictionaryDetailList[i].id == value) {
return resultDictionaryDetailList[i].name;
}
}
return value;
},
Easyui Datagrid 的Combobox 如何动态修改下拉选项,以及值的转换的更多相关文章
- jquery 动态添加下拉框 需要增加 煊染 selectmenu("refresh");
若通过js动态选择下拉框的值必须刷新下拉框,例如:var selArray = $("select#sel");selArray[0].selectedIndex = 1;selA ...
- Easyui datagrid combobox输入框下拉(取消)选值和编辑已选值处理
datagrid combobox输入框下拉(取消)选值和编辑已选值处理 by:授客 QQ:1033553122 测试环境 jquery-easyui-1.5.3 需求场景 如下,在datagri ...
- 通通WPF随笔(1)——基于lucene.NET让ComboBox拥有强大的下拉联想功能
原文:通通WPF随笔(1)--基于lucene.NET让ComboBox拥有强大的下拉联想功能 我一直很疑惑百度.谷哥搜索框的下拉联想功能是怎么实现的?是不断地查询数据库吗?其实到现在我也不知道,他们 ...
- SupportV7包中 SwipeRefreshLayout 修改下拉控件的距离
//修改下拉距离 ViewTreeObserver vto = mCategoryResults.mSwipeRefreshLayout.getViewTreeObserver(); vto.addO ...
- ComboBox 自动调整组合框下拉部分的宽度
/// <summary> /// ComboBox 自动调整组合框下拉部分的宽度 /// </summary> void Resiz ...
- layui 根据根据后台数据动态创建下拉框并同时默认选中
第一步 form表单里写好一个下拉框 <div class="layui-form-item"> <label class="layui-for ...
- Jquery动态设置下拉框selected --(2018 08/12-08/26周总结)
1.Jquery动态根据内容设置下拉框selected 需求就是根据下拉框的值动态的设置为selected,本以为很简单,网上一大推的方法,挨着尝试了之后却发现没有一个是有用的.网上的做法如下: &l ...
- WPF-学习笔记 动态修改控件Margin的值
原文:WPF-学习笔记 动态修改控件Margin的值 举例说明:动态添加一个TextBox到Grid中,并设置它的Margin: TextBox text = new TextBox(); t_gri ...
- jquery 根据后台传过来的值动态设置下拉框、单选框选中
更多内容推荐微信公众号,欢迎关注: jquery 根据后台传过来的值动态设置下拉框.单选框选中 $(function(){ var sex=$("#sex").val(); va ...
随机推荐
- Hibernate 一对一 (one-to-one)
一对一(one-to-one)实例(Person-IdCard) 一对一的关系在数据库中表示为主外关系.例如.人和身份证的关系.每个人都对应一个身份证号.我们应该两个表.一个是关于人信息的表(Pers ...
- 【test】
{"type":[ {"name":"专题分类","num":1,"value":[ ...
- My Test about Mat
一.创建Mat >Mat a = cv::Mat(2,2,CV_32S,1); output: [1,1; 1,1] >Mat a = cv::Mat(2,2,CV_32SC3,1); ...
- PHP 5.5.38 + mysql 5.0.11 + zabbix3.0 + nginx 安装
PHP 5.5.38 + mysql 5.0.11 + zabbix3.0 + nginx 1.首先在安装好环境下安装 zabbix3.0情况下 2. yum install mysql-devel ...
- 接口测试基础——第6篇unittest模块(一)
我们先来简单介绍一下unittest框架,先上代码,跟住了哦~~ 1.建立如下结构的文件夹: 注意,上面的文件夹都是package,也就是说你在new新建文件夹的时候不要选directory,而是要选 ...
- 在IIS上搭建FTP服务
FTP服务 FTP是文件传输协议(File Transfer Protocol)的简称,该协议属于应用层协议(端口号通常为21),用于Internet上的双向文件传输(即文件的上传和下载).在网络上有 ...
- 【DUBBO】Dubbo原理解析-Dubbo内核实现之SPI简单介绍
Dubbo采用微内核+ 插件体系,使得设计优雅,扩展性强.那所谓的微内核+插件体系是如何实现的呢!大家是否熟悉spi(service providerinterface)机制,即我们定义了服务接口标准 ...
- ballerina 学习十一 Packages
ballerina 的包还是比较简单的,实际上就是对于源码文件集合的管理,同时我们可以添加别名,同时可以进行 其他包的引用 import 简单例子 代码 import ballerina/math; ...
- coredns 编译模式添加插件
备注: coredns 默认已经安装了一些插件,比如大家用的多的kubernetes etcd ... 但是我们可以自己编译插件,构建我们自己的 coredns 版本,方便集成使用 1. 项目结 ...
- wpf 虚拟化操作异常
根据这篇文章提供的方法会导致搜索变慢及有时候搜索不到 WPF中ItemsControl应用虚拟化时找到子元素的方法, 具体可以修改为下面代码: //Action action = () => / ...