(1)、JEasyUI 之 Datagrid的Combobox 显示 textField 值的问题
(1)、JEasyUI 之datagrid的Combobox显示textField值的问题
官方的datagrid Demo Row Editing in DataGrid 中field 是否如下定义,但是这样的Demo很多兄弟姐妹看不太懂,并没有理解Form中的Combobox与datagrid中Combobox的区别。
- <th data-options="field:'productid',width:100,
- formatter:function(value,row){
- return row.productname;
- },
- editor:{
- type:'combobox',
- options:{
- valueField:'productid',
- textField:'productname',
- method:'get',
- url:'products.json',
- required:true
- }
- }">Product</th>
---------------------------------------------------------------------------
1.方法一
按照官方Demo转换成SQL数据库字段productid定义与官方一致,combobox 的 formatter 指定了匿名function 里面隐藏字段row.productname就是textField字段,这样的话在实体表中如何设计SQL表与视图呢?
根据SQL范式,productname可以创建一个表来存储,以减少products表的冗余。
--产品类型
create table productType (
productid varchar(10) primary key,
productname varchar(40)
)
GO
--产品表
create table products(
itemid varchar(10) PRIMARY KEY,
productid varchar(10) not null,
listprice float,
unitcost float,
attr1 varchar(30),
--外键
CONSTRAINT [FK_products_productType] FOREIGN KEY
(
[productid]
)
REFERENCES [productType]
(
[productid]
),
)
GO
create view v_products
as --产品表视图
select
itemid, p.productid, t.productname, listprice,
unitcost,attr1
FROM products p
inner join productType t on(p.productid = t.productid)
url:'xxx/q=xxx',服务端返回视图v_products json数据到前端,productname是隐藏的,
以上是SQL实体表的一个种方法,此种方法,还可以使用虚拟字段不要实体productType。
--------------------------------------------------------------------------------------------------------------------------------------------------
2、方法二:
如果产品类型少量不多的话,就可以不需要productType 表,类似应用场景也很多,用Combobox也就是少量的下拉列表,大量的数据用起来也比较麻烦。
我们在使用Form中,Combobox直接使用定义成:
data-options="valueField:
'k',textField: 'v',data: [{k:'1',v:'xxx类型'},{k:'2',v:'xxxxx类型'}]",
就OK,但是在datagrid中,就不能这样使用了,是因为datagrid在结束编辑状态后,editor也就free(消失了),当前Cell表格里面还是显示为valueField的值,但当你再次点击此Cell表格时editor又回来了所以显示正确。
哈哈,初次使用jeasyui就会觉得这很奇葩,其实这是正常现象,也就是Combobox在表格中编辑时显示OK,结束编辑,editor
的Combobox
free了,而Form中的Combobox是不会free的,它显示也正确。
原因知道了,就可以解决它,可以在Grid.afterEdit事件指定相关字段的显示值,或是在Field.data-options指定formatter显示其值。
但是formatter又得每个字段写不同的代码,在大量应用的时候,代码挺多的又很冗余。
有没有一种方法让formatter通用,我们可以通过跟踪formatter
function,在调用时输出 console.info(this); 查看this其实就是指向field的定义,里面有我们定义的数据结构,那么就可以根据formatter的参数(value,row,rowindex)做如下定义一个通用的comboboxFormatter:根据value来选择正确的textField值。
function comboboxFormatter (value, row, rowIndex){
if (!value){
return value;
}
var e = this.editor;
if(e && e.options &&
e.options.data){
var values = e.options.data;
for (var i = values.length - 1; i >=
0; i--) {
//0 {k: "1", v:
"test"}
var k = values[i]['k'];
if (value == k ){
//返回V值
return values[i]['v'];
}
// 对于float类型字段,转换成数取整,再比较
else if (!isNaN(k) &&
!isNaN(value) &&
Math.floor(parseFloat(k))===Math.floor(parseFloat(value)) ) {
return values[i]['v'];
}
}
}
}
}
使用时, data-options="field:'productid', formatter: comboboxFormatter
, ....."
(1)、JEasyUI 之 Datagrid的Combobox 显示 textField 值的问题的更多相关文章
- winform中ComboBox实现text和value,使显示和值分开,重写text和value属性
winform的ComboBox中只能赋值text,显示和值是一样的,很多时候不能满足根本需要,熟悉B/S开发的coder最常用的就是text和value分开的,而且web下DropDownList本 ...
- SSh结合Easyui实现Datagrid的分页显示
近日学习Easyui,发现非常好用,界面很美观.将学习的心得在此写下,这篇博客写SSh结合Easyui实现Datagrid的分页显示,其他的例如添加.修改.删除.批量删除等功能将在后面的博客一一写来. ...
- WPF中DataGrid的ComboBox的简单绑定方式(绝对简单)
在写次文前先不得不说下网上的其他wpf的DataGrid绑定ComboBox的方式,看了之后真是让人欲仙欲死. 首先告诉你一大堆的模型,一大堆的控件模板,其实或许你紧紧只想知道怎么让combobox怎 ...
- 实例:SSh结合Easyui实现Datagrid的分页显示
近日学习Easyui,发现非常好用,界面很美观.将学习的心得在此写下,这篇博客写SSh结合Easyui实现Datagrid的分页显示,其他的例如添加.修改.删除.批量删除等功能将在后面的博客一一写来. ...
- EasyUI Datagrid 鼠标悬停显示单元格内容 复制代码
EasyUI Datagrid 鼠标悬停显示单元格内容 ,halign:, align: 0 « 上一篇:LINQ to Entities 中的查询» 下一篇:去掉字符串中的非数字字符 posted ...
- WPF{ComboBox绑定类对象, 下拉列显示的值,与取到的值}
DisplayMemberPath 是用来显示下拉列表的值 SelectedValuePath是用来取得选中项的值. ComboBox绑定类对象, 下拉列显示的值,与取到的值 string. Join ...
- easyui框架Date日期类型以json形式显示到前台datagrid时,显示为[object Object]
如下图,easyui当后台把时间数据返回转换成json然后加载在easyui的datagrid里面,显示为[object Object] 需要对时间格式添加格式的显示方法 /** * 时间格 ...
- datagrid和combobox简单应用
<?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="ht ...
- EasyUI DataGrid列表,显示undefined
datagrid中,显示undefined的解决方法 在get函数中,将为null的值返回空的字符串 1 public class TestModel { 2 3 private String key ...
随机推荐
- 01 - Element
¶安装 npm 安装 推荐使用 npm 的方式安装,它能更好地和 webpack 打包工具配合使用. npm i element-ui -S CDN 目前可以通过 unpkg.com/element- ...
- jmeter md5加密请求参数
实际的接口测试过程中,再发生http之前有可能需要对某些参数(或某几个参数的组合)进行md5加密 在jmeter中可通过两种方式来实现md5加密 beanshell实现md5加密 在org.apach ...
- HDU 6168 - Numbers | 2017 ZJUT Multi-University Training 9
/* HDU 6168 - Numbers [ 思维 ] | 2017 ZJUT Multi-University Training 9 题意: .... 分析: 全放入multiset 从小到大,慢 ...
- js中int和string数据类型互相转化实例
今天做项目的时候,碰到一个问题,需要把String类型的变量转化成int类型的.按照常规,我写了var i = Integer.parseInt("112");但控制台报错,说是“ ...
- springboot与jdk1.6结合使用需要注意的地方
问题描述:官方文档,默认Spring boot 1.3.5 要求 Java7版本,而当前项目要求 Java6,而且在idea工具中创建项目时,如果采用选项“Spring Initializr”来创建工 ...
- P4556 雨天的尾巴 线段树合并
使用线段树合并,每个节点维护一棵权值线段树,下标为救济粮种类,区间维护数量最多的救济粮编号(下标).所以每个节点答案即为\(tre[rot[x]]\). 然后运用树上点的差分思想,对于分发路径\(u, ...
- yii2.0 模块的使用
以高级模板为例 1.复制目录 frontend或backend 为一个新目录pro修改advanced\common\config\bootstrap.php 添加一行,加载刚才的路劲Yii::set ...
- RBF、GRNN 和 PNN 神经网络在Matlab中的用法
一.RBF神经网络 RBF神经网络概述 径向基函数神经网络 与 BP 神经网络的区别在于训练过程--其参数初始化具有一定方法,并非随机,隐含层的末尾使用了径向基函数,它的输出经过加权和得到 LW2.1 ...
- ICEM rpl文件简要讲解【转载】
转载自:http://blog.sina.com.cn/s/blog_90affd9801016xti.html 很多人问ICEM的rpl怎样录制的问题,为什么CFX调用时老是报错,这里开个帖子简单讲 ...
- 高效使用Linux快捷键
命令行操作快捷键 Ctrl+a跳到本行的行首,Ctrl+e则跳到页尾. Ctrl+u删除当前光标前面的所有文字, ctrl+k-删除当前光标后面的所有文字 Ctrl+w删除光标前的单词 Backsap ...