nonNetStorage.drugVarGrid0 = $('#medicalGrid0').datagrid({
url : '',
idField : 'categoryid',
fitColumns :true,
rownumbers:true,
nowrap:false,
checkOnSelect : false,
rowStyler:function(index,row) {
return 'background-color:#fff;color:black';
},
height : document.body.clientHeight-223,
columns:[[
{field:'drugName',title:'名称',width:'20%'},
{field:'manufactorId',title:'生产厂商id',width:'20%',hidden:true,
editor : {type : 'textbox', options:{}},
},
{
field : 'manufacturerName',
title : '生产厂商名称',
width : '20%',
editor:{
type:'combobox',
width:'80px',
options:{
valueField: 'manufactorName',
textField: 'manufactorName',
editable : false,
panelHeight : '81',
required:true,
onSelect:function(record) {
//根据选择哪个,然后将id设置到 manufactorId 列里面。
var ed = nonNetStorage.drugVarGrid0.datagrid('getEditor', {index:editIndex,field:'manufactorId'});
$(ed.target).textbox('setValue',record.manufactorId);
}
}
}
}
]],
onClickCell : function(index,field,value) {
// 点击一行,动态获取下拉框值,然后将数据塞入下拉框
onClickRow(index,nonNetStorage.drugVarGrid0);
}
});
// 这里跟你说个点,下拉框最好用两个编辑列,一个隐藏,
// 一个用来显示下拉字段。如上两个列:
// 生产厂商id
// 生产厂商名称
// 之所以这么做,是因为你在点击保存的时候,下拉框里面的汉字保存过程会变成id
// 所以显得不好看。
function onClickRow(index,datagrid){
//这里代码就是重点,网格加载好一行一行数据以后,当你点击某一行
//他就传进editIndex
if (editIndex != index){
if (endEditing(datagrid)){
//判断上一行是否把必填填写完毕。
datagrid.datagrid('selectRow', index).datagrid('beginEdit', index);
//生产企业要根据id获取对应生产企业
var rowDatas = datagrid.datagrid('getRows'); //获取网格全部数据
var ed = datagrid.datagrid('getEditor', {index:index,field:'manufacturerName'});
//加上面if判断,结果回来的时候,看不到原先的值,所以只能点击一次请求一次后台
$.post("drugVarietyInfoAction/queryDrugManufactor?categoryid=" + rowDatas[index].categoryid, [],
function(data) {
$(ed.target).combobox('loadData',data);
}, 'json');
editIndex = index;
} else {
//上一行必填没填写完,强制让其填写。
datagrid.datagrid('selectRow', editIndex);
}
}
}