C#数字域的总和(静态和动态)小于100

时间:2018-05-23 15:00:04

标签: javascript c# listener ext.net

我有3个静态numberfields,我在numberfields中创建了一些CodeBehind。我想要的是将所有sum的{​​{1}}限制为100。

以下是静态numberfields

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

blur

在按钮nf.Listeners.Blur.Handler = "#{sum100}.setValue(Number(this.getValue()) + Number(#{sum100}.getValue()));"; 的{​​{1}}事件中,我添加了以下代码:

Before

但这种方法的问题在于,当我第一次输入某些值时,如果我尝试更新click字段,那么它将仅使用更新的{{1}来计算总和}和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事件

1 个答案:

答案 0 :(得分:1)

你可以把它放在&#34;之前&#34;点击这样做:

            var numOfNumFields = 3; //increase as necessary, it could came from a hidden field 

            var sum = 0;
            for ( var i = 0; i< numOfNumFields;i++){

               sum += Ext.getCmp('numS'+i).getValue();
            }
            if (sum > 100)
            { 
                alert('sum is > 100 : ' + sum); 
                return false
            }
            else
            {
                alert('sum is : ' + sum);
                return true;
            }