【沫沫金】miniui表格DataGrid动态Combobox功能实现

背景

业务需要,树形表格每行可选一个下拉列,下拉数据依据行ID

效果


如上图,每一行的批次列下拉框依据产品代号展示。

疑难

怎么让下拉根据行代号获取数据?
想到两种解决方案:1、初始化加载datagrid实现 2、点击的时候动态改变下拉combobox请求地址实现

方案1
尝试了重绘单元格时动态设置请求地址,html代码是完成了,但是也上识别不出mini对象,根本弹不出;失败
尝试数据field内容设置为combobox内容,内容过去了,页面没下拉功能;失败

方案2
点击时设置,事件好监控,问题是没有独立的Id无法使用“mini.get()”获取到combobox元素,想设置有心无力。
过程中发现事件的e对象可以识别到当前行下标,行node都反查出来了,就是不知道怎么拿combobx,费脑子的很。
继续翻Api发现mini.getByName可以获取到元素,就想试试。咱有下标啊,大不了定位呗,没想到,还真成了。不仅拿到了,而且只有一个。被我发现了,行编辑当前只有一个在进行,其他的根本未激活,应该是,因为只拿到当前行。

成功

总结

1、获取datagrid行数据,使用mini.get("datagrid1").getSelect()
因为:不用和我一样,根据单元格元素,获取下标,在反查行,没这么麻烦,上面一节了当。

2、datagrid单元格编辑,必须开启allowCellSelect="true" allowCellEdit="true" multiSelect="true" 元素必须开起<div property="editor">属性
3、树形grid复选框使用datagrid的,好处是使用mini.get("treeTable").getSelectedNodes()直接获取一整行数据,方便。

源码如下:

&lt;div id="treeTable" class="mini-treegrid" treeColumn="product" idField="id" parentField="parentId" 

style="width: 100%; height:90%;" showTreeIcon="true" resultAsTree="false"
checkRecursive="false" value="11000514" expandOnLoad="3" allowCellSelect="true" allowCellEdit="true" multiSelect="true">
<div property="columns">
<div type="checkcolumn" width="50">选择</div>
<div field="batchNumbers" renderer="onBatchNumberCombobox">批次
<div name="batchNumberCombobox" property="editor" class="mini-combobox" style="width:250px;" popupWidth="400" textField="ID" valueField="ID"
url="report/batchNumberList.action" value="" multiSelect="true" showClose="true" onbeforeshowpopup="beforeshowpopup" >‘
<div property="columns">
<div header="批次号" field="ID"></div>
<div header="产品代号" field="TEXT"></div>
</div>
</div>
</div>
</div>
</div>

    function beforeshowpopup(e) {
    var treegrid = mini.get("treeTable");
    var rowNode = treegrid.getSelected();
    var bnc = mini.getByName("batchNumberCombobox");
    bnc.load("report/batchNumberList.action?productCode="+rowNode.productCode);
}

好了,今天就到这里,给大家分享的miniui表格datagrid动态设置每行combobox下拉内容的关键点及思路,我是沫沫金,我在51cto。

原文地址:http://blog.51cto.com/zl0828/2321134

时间: 2024-11-07 03:15:16

【沫沫金】miniui表格DataGrid动态Combobox功能实现的相关文章

[转载]EasyUI中数据表格DataGrid添加排序功能

我们这里演示的是EasyUI数据表格DataGrid从服务器端排序功能,因为觉的本地数据排序没有多大的作用,一般我们DataGrid不会读取全部数据,只会读取当前页的数据,所以本地数据排序也只是对当前页的数据进行排序,不是我们想要用效果. 下面开始演示从服务器端排序功能. 第一步,启用EasyUI DataGrid的排序功能: 具体就是为列设置sortable属性,如下: { field: "SOID", title: "订单单号", width: "80

沫沫金讲:Eclipse卡死cup内存双爆,取消验证无效--看这里修改.project跟我做

背景 公司规范Jar包管理,启用Maven后.新的工程已Maven工程出现 问题 新工程导致打开Eclipse之后CPU就爆灯[99%]这个不干打开JSP.JS.直接卡崩溃 目标 向之前的工程一样,可正常使用毫无卡顿 排除 1.取消所有验证.自动补全等等 2.增大eclipse.ini内存方法 最终 修改.project文件,删减运行时的插件和验证 <?xml version="1.0" encoding="UTF-8"?> <projectDes

沫沫金:JavaScript拼接html片段使用反斜杠

JS使用"\"反斜杠拼接 $('#result_ok').append('<p>                    预约挂号医院:西安市第八医院                    </p>                    <p>                        预约挂号科室:皮肤科-1科室 皮肤科                    </p>                    <p>     

沫沫金 - jQuery序列化form表单【支持ajax提交form对象表单entity.xxx】

需要form表单提交,大表单对字段后台人工处理太麻烦.还是选择form表单对象(entity.xx)提交方便,那么怎么ajax提交这样的form对象表单呢? 命名jquery.commons.js内容如下 /**  * FORM对象表单ajax提交前数据处理方法  * @param frm  * @returns JSON Object  */ function getFormJson(frm) {     var o = {};     var a = $(frm).serializeArra

沫沫金-Mybatis工具类,生成dao层xml、mapper文件和实体类entity层

Mybatis Generator工具使用起来,总感觉不太灵活加上初次环境配置麻烦,特编写java文件 单文件不依赖,直接生成.源码如下(此为Oracle数据库版) package net.icarefx.booking.util; import java.io.BufferedWriter; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.Outpu

沫沫金原创提供:完整的根据身份证获取省份、性别、年龄、生日及页面验证

概述: 身份证的校验,识别,分离,处处可见.最近H5移动端的项目就需要扫码获取身份证,根据身份证自动识别省份.性别.年龄.生日信息.这里分享完善版,希望大家喜欢. 环境: 依赖jQuery.BootStrap Html <form id="cardForm"> <div class="form-group"> <label>姓名</label> <input id="patientname"

[沫沫金原创]jQuery温度计,支持摄氏度华氏度同时展示

特色 纯jQuery+Css原生,无任何第三方.同时支持摄氏度.华氏度同时显示,并可随意定义温度计颜色,例如小于10度绿色.小于20度红色等等. 同时支持摄氏度.华氏度 支持自定义温度计颜色 支持自定义温度计款式(Psd原图提供) 以上,谢谢.沫沫金祝你工作一路顺,步步高! 提供源码下载http://down.51cto.com/data/2317776

Flex4.6 DataGrid自定义ComboBox并获取自定义ComboBox的值

最近,项目需求需要在DataGrid上动态生成GridColumn以及设置其为ComboBox,默认是为TextInput. Flex 4.6使用s:DataGrid组件而不是mx:DataGrid,网上很多资料都是mx组件的,于是写了这篇文章. 首先,s:DataGrid的标题栏存储的对象是GridColumn. 标题栏动态添加函数 <span style="font-family:Microsoft YaHei;font-size:18px;"> var columns

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

在写次文前先不得不说下网上的其他wpf的DataGrid绑定ComboBox的方式,看了之后真是让人欲仙欲死. 首先告诉你一大堆的模型,一大堆的控件模板,其实或许你紧紧只想知道怎么让combobox怎么显示出来而已. 惯例先上图: 达到这样的效果其实很简单,除了让数据模型之外紧紧只有几行代码. 先看数据模型: public class VModel : INotifyPropertyChanged { private string _Name; public string Name { get