У меня есть 3 статических numberfields
, и я создаю еще numberfields
в CodeBehind
.Я хочу ограничить sum
значений всех numberfields
до 100.
Вот статические numberfields
:
<ext:NumberField ID="numS1" runat="server" MinValue="0" MaxValue="100" FieldLabel="numS1" />
<ext:NumberField ID="numS2" runat="server" MinValue="0" MaxValue="100" FieldLabel="numS2" />
<ext:NumberField ID="numS3" runat="server" MinValue="0" MaxValue="100" FieldLabel="numS3" />
А вот динамические numberfields
создано в коде:
foreach (var v in visits)
{
NumberField nf = new NumberField();
nf.ID = v.VISID + "num";
nf.MaxValue = 100;
nf.MinValue = 0;
nf.FieldLabel = v.VISID;
PerVisitFS.Items.Add(nf);
nf.Render();
}
Я попытался использовать hidden
поле #{sum100}
, а для полей dynamic
создать событие listener
on blur
:
nf.Listeners.Blur.Handler = "#{sum100}.setValue(Number(this.getValue()) + Number(#{sum100}.getValue()));";
И на Before
событии click
кнопки я добавил этот код:
Before="#{sum100}.setValue(Number(#{sum100}.getValue()) + Number(#{numS1}.getValue()) + Number(#{numS2}.getValue()) + Number(#{nums#}.getValue()));
if ( #{sum100}.getValue() > 100)
{ alert('sum is > 100 : ' + #{sum100}.getValue());
#{sum100}.setValue(0);
return false;
}
else
{alert('sum is : ' + #{sum100}.getValue())}">
Но проблема с этим подходом заключается в том, что при вводенекоторые значения в первый раз работают, но если я попытаюсь обновить поле dynamic
, тогда будет вычислена сумма только с обновленными numberfield
и static
без других dynamic
.
Это происходит потому, что событие blur
не вызывается в неизмененном dynamic
numberfields