如何在Ext.net中使用JavaScript在UserControl中获取控件的元素ID

时间:2013-03-15 13:56:01

标签: javascript asp.net ext.net

我正在使用JavaScript函数基于DateField值编写Age计算,并尝试在另一个Numeric textBox中填充该值。使用以下代码。

<script>

        function getAge(event, toolEl, panel, tc) {
            debugger;
            var today = new Date();
            var birthDate = new Date(event.getValue());
            var age = today.getFullYear() - birthDate.getFullYear();
            var m = today.getMonth() - birthDate.getMonth();
            if (m < 0 || (m === 0 && today.getDate() < birthDate.getDate())) {
                age--;
            }
            if (event.name == 'dtMotherDOB') {
                Ext.getCmp('txtMotherAge').setValue(age);
            }
            else
                Ext.getCmp('txtFatherAge').setValue(age);
            return age;
        }


    </script>


 <ext:DateField ID="dtFatherDOB" runat="server"  FieldLabel="Father DOB"  
                                        Vtype="daterange" EndDateField="dtDOB" EnableKeyEvents="true">
         <Listeners>
                 <Select Fn="getAge"/>
        </Listeners>
  </ext:DateField>

  <ext:NumberField ID="txtFatherAge" runat="server" FieldLabel="Father Age"                       Width="300"  MinValue="20">

    </ext:NumberField>

在选择DataField值后的上述代码中,我填充了txtMotherAge中的textBox值。

使用上面的代码。 Ext.getCmp('txtFatherAge').setValue(age);用于从表单中获取元素并在textbox中设置age的值。

以上代码适用于简单表单。

但是当我在UserControl中使用此代码并在另一个窗体中使用usercontrol时。 Ext.getCmp('txtFatherAge').setValue(age)显示错误,Ext.getCmp('txtFatherAge')值变为'undefined'

上面的代码有什么问题。如何在ext.net控件中获取usercontrol中的元素。

请帮助我。

谢谢。

1 个答案:

答案 0 :(得分:3)

试试这个:

Ext.getCmp('<%=UserControl1.ClientID%>' + '_' + 'txtFatherAge').setValue(age)

或者,

设置ClientIDMode="Static"

<ext:NumberField ID="txtFatherAge" ClientIDMode="Static" runat="server"    
 FieldLabel="Father Age" Width="300"  MinValue="20"></ext:NumberField>