rush:js;">
var InboundStatus = [{ "value": "1","text": "入库" },{ "value": "-1","text": "待入库" }];
rush:js;">
function unitformatter(value,rowData,rowIndex) {
if (value == 0) {
return;
}
for (var i = 0; i < InboundStatus.length; i++) {
if (InboundStatus[i].value == value) {
return InboundStatus[i].text;
}
}
}
rush:js;">
{
field: 'Status',title: '入库状态',formatter: unitformatter,editor: {
type: 'combo
Box',options: { data: InboundStatus,valueField: "value",textField: "text" }
}
},//这部分
代码请结合下面的创建Grid的Js
代码查看。
$("#dataGrid").datagrid({
title: "产品列表",idField: 'ProductID',treeField: 'ProductName',onClickCell: onClickCell,sortOrder: "desc",//表示在datagrid设置
分页
rownumbers: true,singleSelect: false,url: "/Inbound/GetProductPage",onLoadSuccess: function (data) {
if (data.total == 0) {
var body = $(this).data().datagrid.dc.body2;
body.find('table tbody').append('
暂无数据调用reload方法重新加载数据有数据时显示出分页导航容器
else $(this).closest('div.datagrid-wrap').find('div.datagrid-pager').show();
},columns: [[
{ field: 'ck',{ field: 'ProductID',title: '产品ID',hidden: true },{ field: 'CategoryID',title: '分类ID',align: 'center',{ field: 'CategoryName',title: '所属分类',editor: 'numberBox' },{
field: 'Status',{
field: 'InDate',editor: {
type: 'dateBox'
}
},{
field: 'Storage',title: '所入仓库',row) {
return row.Storage || value;
},editor: {
type: 'combogrid',options: {
//url: '/Storage/GetAllStorage',//url:'/Product/GetAllCustomerAddress',rownumbers: true,data: $.extend(true,[],sdata),idField: 'AddressID',textField: 'Name',columns: [[
{ field: 'AddressID',{ field: 'Name',title: '库名' },{ field: 'Country',title: '国家' },{ field: 'Province',title: '省份' },{ field: 'City',title: '市' },{ field: 'Area',title: '区' },{ field: 'Address',title: '详细地址' },loadFilter: function (sdata) {
if ($.isArray(sdata)) {
sdata = {
total: sdata.length,rows: sdata
}
}
return sdata;
},}
}
}
]],onBeginEdit: function (index,row) {
var ed = $(this).datagrid('getEditor',{ index: index,field: 'Storage' });
$(ed.target).combogrid('setValue',{ AddressID: row.AddressID,Name: row.Name });
},onEndEdit: function (index,field: 'Storage' });
row.Storage = $(ed.target).combogrid('getText');
},onClickRow: function (index,row) {//getEditor
var ed = $(this).datagrid('getEditor',field: 'Storage' });
if (ed != undefined) {
var s = row.Storage;
for (var i = 0; i < sdata.length; i++) {
if (s == sdata[i].Name) {
$(ed.target).combogrid('setValue',sdata[i].AddressID);
}
}
}
}
});
三、重头戏,也是我遇到的问题。
描述:我在datagrid中添加了下拉datagrid控件,当我第一次选中后,如果在去点击datagrid行,选中的下拉datagrid控件的值会被刷掉,这个问题确实困扰我很久,不过后来处理了,那种感觉也是无比的爽啊!
如上效果图,“所入仓库”一列,下拉是个datagrid,他的专业词汇叫“Combogird”。就是这个玩意第一次选中没问题,第二次点击会把第一次选中的值刷掉。这也是一开始我对EasyUi的一个OnClickRow事件不了解。
先来上我之前的错误代码:
rush:js;">
onClickRow: function (index,field: 'Storage' });
$(ed.target).combogrid('setValue',row.Name);
}
}
}
大家伙一定很苦恼这个row.Name是个什么玩意?what?其实我一开始也不知道,因为这个是错误代码,我是病急乱投医,胡乱写的,哈哈,也不是胡乱写啦,因为我的下拉grid中有个字段是Name,然而我把他混淆了,此row是指你点击的datagrid的row,而不是你数据源的row。我也是不断调试Js看出来的端倪。我点击datagrid的时候,代码跳入OnClickRow事件中,有句代码:“var ed = $(this).datagrid('getEditor',field: 'Storage' })
;”,然后发现ed为null,Js抛异常,但是界面看不出来,只是把选中的数据刷掉了。找到问题后,还是不确定,代码修改完,再运行,正常显示,也不刷掉我选中的值。
正确代码如下:
rush:js;">
onClickRow: function (index,sdata[i].AddressID);
}
}
}
}
一下是下拉Grid的数据源
rush:js;">
function synchroAjaxByUrl(url) {
var temp;
$.ajax({
url: url,async: false,type: 'get',dataType: "json",success: function (data) {
temp = data;
}
});
return temp;
}
var sdata = synchroAjaxByUrl('/Product/GetAllCustomerAddress');
总结
以上所述是小编给大家介绍的EasyUi控件中的Datagrid。编程之家 jb51.cc 收集整理的教程希望能对你有所帮助,如果觉得编程之家不错,可分享给好友!感谢支持。
原文地址:https://www.jb51.cc/js/36894.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。