RadNumericTextBox in RadListView

3 posts, 0 answers
  1. Sam Bronchetti
    Sam Bronchetti avatar
    12 posts
    Member since:
    Sep 2012

    Posted 30 May 2012 Link to this post

    I am trying to get the value of one of RadNumericTextBoxes in a RadListView via javascript and am having issues.  I have had to hardcode the value in the javascript and am looking for a better solution..  Here is the relevant code:
    This is the RadListView.  There are repeating text boxes, then there is a total text box.  I have a javascript function that gets the values of the updated text box, then updates the total.
            <telerik:RadListView ID="rlvApproval" runat="server">
                <LayoutTemplate>
                    <table>
                        <tr>
                            <td style="width: 250px;">
                            </td>
                            <td style="width: 200px; font-weight: bold;">
                            </td>
                        </tr>
                    </table>
                    <asp:PlaceHolder ID="itemplaceholder" runat="server" />
                    <table>
                                            <tr>
                            <td style="width: 250px;">
                                <asp:Label ID="lblName" runat="server" Text="Total" Font-Bold="true" />
                            </td>
                            <td style="width: 200px; font-weight: bold;">
                                <telerik:RadNumericTextBox ID="txtTotalValue" runat="server" ReadOnly="true" DataType="System.Decimal"
                                    Skin="Web20">
                                    <NumberFormat DecimalDigits="0" />
                                </telerik:RadNumericTextBox>
                            </td>
                        </tr>
                          
                    </table>
                </LayoutTemplate>
                <ItemTemplate>
                    <table>
                        <tr>
                            <td style="width: 250px;">
                                <asp:Label ID="lblName" runat="server" Text='<%# Eval("name") %>' />
                            </td>
                            <td style="width: 250px;">
    <%--                            <telerik:RadNumericTextBox ID="txtValue" runat="server" DataType="System.Decimal"
                                    Skin="Web20" DbValue='<%# DataBinder.Eval(Container.DataItem, "value") %>' MaxValue="100"
                                    MinValue="0" AutoPostBack="false">
                                    <NumberFormat DecimalDigits="0" />
                                </telerik:RadNumericTextBox>--%>
                                                            <telerik:RadNumericTextBox ID="txtValue" runat="server" DataType="System.Decimal"
                                    Skin="Web20" DbValue='<%# DataBinder.Eval(Container.DataItem, "value") %>' MaxValue="100"
                                    MinValue="0" AutoPostBack="false" >
                                    <NumberFormat DecimalDigits="0" />
                                    <ClientEvents OnValueChanged="ValidateWeighting" />
                                </telerik:RadNumericTextBox>
                            </td>
                        </tr>
                    </table>
                </ItemTemplate>
                <EmptyDataTemplate>
                    <div class="message">
                        <asp:Label ID="lblEmptyMessage" runat="server" SkinID="messageBig" Text="Error loading approval information..." />
                    </div>
                </EmptyDataTemplate>
            </telerik:RadListView>
    The javascript function is:
    function ValidateWeighting(sender, eventArgs) {
        var object = document.getElementById('ctl00_ContentPlaceHolder1_Weighting1_rlvApproval_txtTotalValue');
        //var object = $find(sender.get_id().replace("txtValue", "txtTotalValue"));
        var object2 = document.getElementById('<%= rlvApproval.ClientID %>');
        var current = eval(object.value);
        var old = eventArgs.get_oldValue();
        var newval = eventArgs.get_newValue();
        var tmp = current + (newval - old);
        if (tmp == 100) {
            document.getElementById('<%= btnSave.ClientID %>').disabled = false;
        }
        else {
            document.getElementById('<%= btnSave.ClientID %>').disabled = true;
        }
        object.value = tmp;
    }

    How do I get the value of txtTotalValue.  I have tried the solution I have seen elsewhere, but am getting errors.  Any idea?
  2. Princy
    Princy avatar
    17421 posts
    Member since:
    Mar 2007

    Posted 31 May 2012 Link to this post

    Hi,

    Try the following code snippet.

    JS:
    <script type="text/javascript" >
            function ValidateWeighting(sender, eventArgs)
            {
                var object2 = $find("<%=rlvApproval.ClientID %>");
                var current = object2._findChildControl("txtTotalValue").get_value();
                var old = eventArgs.get_oldValue();
                var newval = eventArgs.get_newValue();
                var tmp = current + (newval - old);
                var btn = object2._findChildControl("btnSave");
                if (tmp == 100)
                {
                    btn.set_enabled(false);
                }
                else
                {
                    btn.set_enabled(true);
                }
                object2._findChildControl("txtTotalValue").set_value(tmp);
            }
    </script>

    Hope this helps.

    Thanks,
    Princy.
  3. UI for ASP.NET Ajax is Ready for VS 2017
  4. Sam Bronchetti
    Sam Bronchetti avatar
    12 posts
    Member since:
    Sep 2012

    Posted 31 May 2012 Link to this post

    Thanks, that helped.  I modified the new function to the following and it worked.
    function ValidateWeighting(sender, eventArgs) {
               var object2 = $find("<%= rlvApproval.ClientID %>");
               var object = object2._findChildControl("txtTotalValue");
               var current = eval(object.get_value());
               var old = eventArgs.get_oldValue();
               var newval = eventArgs.get_newValue();
               var tmp = current + (newval - old);
               if (tmp == 100) {
                   document.getElementById('<%= btnSave.ClientID %>').disabled = false;
               }
               else {
                   document.getElementById('<%= btnSave.ClientID %>').disabled = true;
               }
               object.set_value(tmp);
           }
Back to Top