用combobox做了一个搜索框,搜索框是editgridpanel的一列,因为是搜索框,所以store会随搜索内容的变化而变化,搜索框根据store弹出下拉列表,调用renderer function遍历combobox的store来返回显示值,displayField和valueField为store的不同列。当我在表格中增加了多行时,比如两行,因为有两个搜索框,两个搜索框的store不同,最新增加的一行能正常显示,但是另一行因为只能遍历最新的store来返回显示值,而最新的store不一定包含了选择项,所以当另一行的其他列编辑时,搜索框调用renderer方法就有可能变为空。
请问有什么方法能在renderer function中得到当前行搜索框的显示值,或者是让renderer funtion在限制条件下触发,或者是其他方法。谢谢
截图,第二行改变数量一列,使第一列搜索框值变为空,因为改变数量触发了第一列搜索框的renderer方法,遍历store无值,所以变为空。
请问有什么方法能在renderer function中得到当前行搜索框的显示值,或者是让renderer funtion在限制条件下触发,或者是其他方法。谢谢
截图,第二行改变数量一列,使第一列搜索框值变为空,因为改变数量触发了第一列搜索框的renderer方法,遍历store无值,所以变为空。
var search = new Ext.form.ComboBox({
store: ds_medicine,
displayField:'TRADENAME',
valueField: 'LEECHDOMDETAILNO',
typeAhead: false,
hiddenName: 'NAME',
loadingText: '药品检索中...',
name: 'NAME',
width: 300,
pageSize:20,
mode: 'remote',
listWidth: 800,
hideTrigger:true,
selectOnFocus: true,
tpl: resultTpl,
itemSelector: 'tr.search',
onKeyUp: function(e) {
_strSpellNo = search.getRawValue();
if (_strSpellNo == "") return;
var k = window.event.keyCode;
if (k != 37 && k != 38 && k != 39 && k != 40 && k != 13) {
var request = { start: 0, limit:20, spellNo: _strSpellNo };
ds_medicine.reload({ params: request });
setTimeout('', 500);
}
}
});
//coulumnModel搜索框一列代码
{
header: '名称',
dataIndex: 'NAME',
width: 150,
editor: search,
renderer: function(value, metadata, record, rowIndex,colIndex, store){
var returnValue;//返回值
var medStore = search.getStore();//药品搜索框store
medStore.each(function(rec){
//遍历药品搜索store,当找到当前传入value对应行时,更新页面药品名称显示及规格、数量单位等信息
if(rec.get('LEECHDOMDETAILNO')==value){
record.set('GG',rec.get('SPECS'));
if(rec.get('OUTPATIENTUNIT')=="包装"){
record.set('SLDW',rec.get('PACK'));
}
if(rec.get('OUTPATIENTUNIT')=="单位"){
record.set('SLDW',rec.get('UNIT'));
}
record.set('JLDW',rec.get('DOSAGEUNIT'));
returnValue = rec.get('TRADENAME');
}
});
return returnValue;
}
}
有没有什么方法能在名称一列的renderer方法里面得到显示值,现在能够得到的value是药品ID,但是我不可能每次renderer都重新去查一下数据库吧
renderer:function(value, metadata, record, rowIndex, colIndex, store){
return record.get("药品ID");
}
分都给你吧,还是谢谢你了zoujp_xyz