Muhtemelen seçeneklerin her aralığı için yeni bir seçme editör yapmak istemiyorum. Ayrıca, önceden tüm seçenek değerlerinin aralığını bilmiyor olabilirsiniz.
Bu durumda, belirli bir tür düzenleyicide esnek bir seçenek yelpazesi istiyorsunuz. Bunu yapmak için böyle sütun tanımları (örneğin denilen seçenekler) için fazladan bir seçenek ekleyebilirsiniz:
var columns = [
{id:"color", name:"Color", field:"color", options: "Red,Green,Blue,Black,White", editor: SelectCellEditor},
{id:"lock", name:"Lock", field:"lock", options: "Locked,Unlocked", editor: SelectCellEditor}
]
ve erişime bu gibi kendi SelectEditor
nesnenin init yönteminde args.column.options
kullanarak:
SelectCellEditor : function(args) {
var $select;
var defaultValue;
var scope = this;
this.init = function() {
if(args.column.options){
opt_values = args.column.options.split(',');
}else{
opt_values ="yes,no".split(',');
}
option_str = ""
for(i in opt_values){
v = opt_values[i];
option_str += "<OPTION value='"+v+"'>"+v+"</OPTION>";
}
$select = $("<SELECT tabIndex='0' class='editor-select'>"+ option_str +"</SELECT>");
$select.appendTo(args.container);
$select.focus();
};
this.destroy = function() {
$select.remove();
};
this.focus = function() {
$select.focus();
};
this.loadValue = function(item) {
defaultValue = item[args.column.field];
$select.val(defaultValue);
};
this.serializeValue = function() {
if(args.column.options){
return $select.val();
}else{
return ($select.val() == "yes");
}
};
this.applyValue = function(item,state) {
item[args.column.field] = state;
};
this.isValueChanged = function() {
return ($select.val() != defaultValue);
};
this.validate = function() {
return {
valid: true,
msg: null
};
};
this.init();
}
Teşekkür, bunu değiştirmek ve denemek gerekecek sanırım ve sütunlara bazı parametreleri ekleyerek sütunları anında değiştirebilirsiniz. jqGrid seçme listeleri atm. – Sam