Добрый день!
Была задача поставить checkBox на веб-страницу и чтобы по клику - другой контрол (comboBox) становился enabled/disabled.
Я решил эту проблему добавив в класс WebFormHtml, в метод layotCheckBox следующий код (помечен TE-rko):
X++:
void layoutCheckBox(FormWebCheckBox fwcb)
{
boolean allowedit,mandatory,enabled;
.....
#Output(' name="'+this.controlName(fwcb)+'"');
// [AGR6988]CUS-Modification on 28.03.2007 by TE-rko added - start
if (this.controlName(fwcb) == 'AGR_EPFarmerRegisteredUsers_InvoicePaym')
#Output(' onclick="InvoicePaym_OnClick()"');
// [AGR6988]CUS-Modification on 28.03.2007 by TE-rko added - end
..........
#Output('></td>\n');
// [AGR6988]CUS-Modification on 28.03.2007 by TE-rko added - start
if (this.controlName(fwcb) == 'AGR_EPFarmerRegisteredUsers_InvoicePaym')
{
#Output('<SCRIPT LANGUAGE=javascript>\n');
#Output('function InvoicePaym_OnClick()\n');
#Output('{\n');
#Output('if (document.'+_webrun.name()+'.AGR_EPFarmerRegisteredUsers_InvoicePaym.checked == false)\n');
#Output(' { document.'+_webrun.name()+'.AgrHomeShopId.value = 1;\n');
#Output(' document.'+_webrun.name()+'.AgrHomeShopId.disabled = true; }\n');
#Output('else\n');
#Output(' { document.'+_webrun.name()+'.AgrHomeShopId.disabled = false;}\n');
#Output('}\n');
#Output('window.onload = function()\n');
#Output('{\n');
#Output(' InvoicePaym_OnClick();\n');
#Output('}\n');
#Output('</SCRIPT>\n');
}
// [AGR6988]CUS-Modification on 28.03.2007 by TE-rko added - end
}
Всё работает, но вопрос - нельзя ли было это обойти как нибудь через layout или какой другой метод у контрола или конкретной веб-формы,- чтобы не менять системный класс таким "хардкодингом"?
Как вообще работает layout?
Заранее спасибо!