Hi,
I have tried the below code for combobox in search form and its working fine. But if want to implement the similar functionality in comboboxes in the grids how should i do? Please see the combo box code in grid after the comboHandler function starting from function initCombos()
function comboHandler(){
var control=“cp”;
var selectedInterval = intervalCombo.getActualValue();
var url = appContext+servletContext+questionMark+area+"&interval="+selectedInterval+"&control="+control;
if(selectedCategory == "F" && document.getElementById("comboDiv").innerHTML == ""){
aCombo=new dhtmlXCombo("comboDiv",control,120);
aCombo.autoOptionSize=true;
aCombo.DOMelem_input.style.color="red";
aCombo.setComboText("Loading...");
aCombo.loadXML(url, function(){onXmlLoad(aCombo)});
aCombo.attachEvent("onClick",function(){
aCombo._last=(new Date()).valueOf();
})
aCombo.attachEvent("onKeyPressed",function(keyCode){
aCombo.enableFilteringMode(true);
})
aCombo.attachEvent("onOpen",function(){
window.setTimeout(function(){
if ((new Date()).valueOf()-(aCombo._last||0) > 100) return;
var text = aCombo.getComboText();
aCombo.setComboText("")
aCombo.filterSelf();
aCombo.setComboText(text);
},1);
})
}
}
function initCombos() {
var area=“client”;
b.setArea(area);
var z = setUpDhtmlXCombo(area, "bnk_br_id_c", 202);
z.readonly(false);
z.required(true);
z.enableDynamicLoad(true, b.getURL("branch"));
}
function setUpDhtmlXCombo(formId, colId, tabIndex) {
var divId = “combo” + “" + formId + "” + colId;
var comboId = formId + “_” + colId;
var width = 80;
var z = getDhtmlXComboInstance(divId, colId, width, tabIndex);
dhtmlXCombo_set[comboId] = z;
return z;
}
function getDhtmlXComboInstance(divId, colId, width, tabIndex) {
var z = new dhtmlXCombo(divId, colId, width, '', tabIndex);
z.setAutoOptionSize(true);
z.DOMelem_hidden_input.className = "fmtCombo";
z.DOMelem_hidden_input.id = colId;
z.DOMelem_input.combo = z;
z._skipOnChange = false; // allow processing of onChange event
z.attachEvent("onChange", function() {
if (!this._skipOnChange) {
doOnElementChange(this.DOMelem_hidden_input);
} else {
this._skipOnChange = false;}
}
);
return z;
}
function ComboServiceUrlBuilder(appContext, servletContext) {
this._appContext = appContext;
this._servletContext = servletContext;
this._area;
this.setArea = function (area) { this._area = area + "Details"; };
this.getURL = function (control ) { return this._appContext + this._servletContext + "?area=" + this._area + "&control=" + control; };
}
dhtmlXCombo.prototype.enableDynamicLoad = function (mode, url) {
this._dynamicLoad = mode;
this._dynamicLoadURL = url;
this._loaded = false;
this.DOMelem.onclick = this._toggleSelectD;
this.DOMmsg = document.createElement("DIV");
this.DOMmsg.className = 'dhx_combo_list';
this.DOMmsg.style.width=80-(_isIE?0:0)+"px";
if (_isOpera || _isKHTML )
this.DOMmsg.style.overflow="auto";
this.DOMmsg.style.display = "none";
this.DOMmsg.style.paddingLeft = "5px";
this.DOMmsg.style.paddingTop = "5px";
this.DOMmsg.innerHTML = "<font color=red>Loading ...</font>";
document.body.insertBefore(this.DOMmsg,document.body.firstChild);
}
dhtmlXCombo.prototype._toggleSelectD = function(e) {
var that=this.combo;
if ( that.DOMlist.style.display == "block" ) {
that.closeAll();
} else {
if (that._dynamicLoad && ! that._loaded) {
that._positMessage();
that.DOMmsg.style.display="block";
setTimeout(function() { that.loadXMLD(that._dynamicLoadURL) }, 100);
(e||event).cancelBubble = true;
return;
}
that.openSelect();
}
(e||event).cancelBubble = true;
}
dhtmlXCombo.prototype.loadXMLD = function(url){
var currentValue=this.getActualValue();
var xml=(new dtmlXMLLoaderObject(this._fillFromXML,this,false,true));
xml.loadXML(url);
dt_combo=this;
setTimeout(function() { dt_combo.onLoadComplete(currentValue) }, 100);
}