I apologize if this has been answered elsewhere. I have what, I think, is a simple problem. I am trying to access one of the controls in the LayoutTemplate of a RadListView via javascript. Here is the ListView code:
Whenever the txtValue is updated, I fire a javascript function to determine if the values are 100% based on the current total value that is set in the codebehind. Here is the code I have that is working:
However, The id to get the object for the txtTotalValue control was obtained through "View Source". What I am looking for is the right way to do this that avoids browser differences, web server differences, etc.
Any thoughts?
<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" /> <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> function ValidateWeighting(sender, eventArgs) { var object = document.getElementById('ctl00_ContentPlaceHolder1_Weighting1_rlvApproval_txtTotalValue_text'); 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; } Any thoughts?
