(1)、JEasyUI 之datagrid的Combobox显示textField值的问题

官方的datagrid Demo Row Editing in DataGrid 中field 是否如下定义,但是这样的Demo很多兄弟姐妹看不太懂,并没有理解Form中的Combobox与datagrid中Combobox的区别。

  1. <th data-options="field:'productid',width:100,
  2. formatter:function(value,row){
  3. return row.productname;
  4. },
  5. editor:{
  6. type:'combobox',
  7. options:{
  8. valueField:'productid',
  9. textField:'productname',
  10. method:'get',
  11. url:'products.json',
  12. required:true
  13. }
  14. }">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 值的问题的更多相关文章

  1. winform中ComboBox实现text和value,使显示和值分开,重写text和value属性

    winform的ComboBox中只能赋值text,显示和值是一样的,很多时候不能满足根本需要,熟悉B/S开发的coder最常用的就是text和value分开的,而且web下DropDownList本 ...

  2. SSh结合Easyui实现Datagrid的分页显示

    近日学习Easyui,发现非常好用,界面很美观.将学习的心得在此写下,这篇博客写SSh结合Easyui实现Datagrid的分页显示,其他的例如添加.修改.删除.批量删除等功能将在后面的博客一一写来. ...

  3. WPF中DataGrid的ComboBox的简单绑定方式(绝对简单)

    在写次文前先不得不说下网上的其他wpf的DataGrid绑定ComboBox的方式,看了之后真是让人欲仙欲死. 首先告诉你一大堆的模型,一大堆的控件模板,其实或许你紧紧只想知道怎么让combobox怎 ...

  4. 实例:SSh结合Easyui实现Datagrid的分页显示

    近日学习Easyui,发现非常好用,界面很美观.将学习的心得在此写下,这篇博客写SSh结合Easyui实现Datagrid的分页显示,其他的例如添加.修改.删除.批量删除等功能将在后面的博客一一写来. ...

  5. EasyUI Datagrid 鼠标悬停显示单元格内容 复制代码

    EasyUI Datagrid 鼠标悬停显示单元格内容 ,halign:, align: 0 « 上一篇:LINQ to Entities 中的查询» 下一篇:去掉字符串中的非数字字符 posted ...

  6. WPF{ComboBox绑定类对象, 下拉列显示的值,与取到的值}

    DisplayMemberPath 是用来显示下拉列表的值 SelectedValuePath是用来取得选中项的值. ComboBox绑定类对象, 下拉列显示的值,与取到的值 string. Join ...

  7. easyui框架Date日期类型以json形式显示到前台datagrid时,显示为[object Object]

    如下图,easyui当后台把时间数据返回转换成json然后加载在easyui的datagrid里面,显示为[object Object]      需要对时间格式添加格式的显示方法 /** * 时间格 ...

  8. datagrid和combobox简单应用

    <?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="ht ...

  9. EasyUI DataGrid列表,显示undefined

    datagrid中,显示undefined的解决方法 在get函数中,将为null的值返回空的字符串 1 public class TestModel { 2 3 private String key ...

随机推荐

  1. Windows 创建Raid

    Windows 常见raid有0.1和5,以下操作在虚拟机下模拟,学会这招在自己电脑做个raid也未尝不可啊~ 一.RAID 0 创建: 添加两块硬盘,联机并初始化(2T以下选MBR,以上选GPT) ...

  2. Codeforces Round #603 (Div. 2) A,B,C,D【E题待补】

    #include<bits/stdc++.h> using namespace std; #define int long long signed main(){ int _; cin&g ...

  3. 使用webuploader实现大文件上传

    javaweb上传文件 上传文件的jsp中的部分 上传文件同样可以使用form表单向后端发请求,也可以使用 ajax向后端发请求 1.通过form表单向后端发送请求 <form id=" ...

  4. 利用webuploader实现超大文件分片上传、断点续传

    之前仿造uploadify写了一个HTML5版的文件上传插件,没看过的朋友可以点此先看一下~得到了不少朋友的好评,我自己也用在了项目中,不论是用户头像上传,还是各种媒体文件的上传,以及各种个性的业务需 ...

  5. [转]protobuf的编译安装

    github地址:https://github.com/google/protobuf支持多种语言,有多个语言的版本,本文采用的是在centos7下编译源码进行安装. github上有详细的安装说明: ...

  6. 爬虫(五):PyQuery的使用

    一:简介 PyQuery库是jQuery的Python实现,可以用于解析HTML网页内容,是一个非常强大又灵活的网页解析库. -->官方文档地址 -->jQuery参考文档 二:初始化 初 ...

  7. nasm汇编讲解

    一.什么是nasm汇编 nasm使用在windows.linux等系统下的汇编. 二.语法介绍 2.1 nasm 是区分大小写 例如:符号 foo 与 FOO 是两个不同的标识符. 2.2 内存操作数 ...

  8. Java for循环的语法和执行顺序

      关于java的for循环想必大家非常熟悉,它是java常用的语句之一.for循环是最灵活也是最常用的循环结构,表达式一般如下: for(表达式1;表达式2;表达式4){ 表达式3; } 执行顺序: ...

  9. (转)supervisor

    转载:https://www.cnblogs.com/zhoujinyi/p/6073705.html 进程管理supervisor的简单说明 背景: 项目中遇到有些脚本需要通过后台进程运行,保证不被 ...

  10. faster-rcnn CUDA8.0编译错误

    之前编译Faster-RCNN的时候用的都是CUDA7.5,最近换了机器,变成了CUDA8.0,果然编译出现错误了…… 参考下面这篇博客解决了问题: http://blog.csdn.net/kexi ...