Ich habe ein Steuerelement, das eine Javascript-Funktion enthält, die auf dem Client-Klick-Ereignis einer Schaltfläche aufgerufen wird:
OnClientClicked="ClearTree"
die Funktion:
function ClearTree() {
var tree = $find('<%=cboOrgUnits.Items[0].FindControl("tvOrgUnits").ClientID %>');
var nodes = tree.get_nodes();
for (var i = 0; i < nodes.get_count(); i++) {
nodes.getNode(i).uncheck();
}
};
Das funktioniert alles gut, außer wenn das Steuerelement zweimal auf derselben Seite ist. Wenn es ist, gibt es 2 Instanzen der Funktion "ClearTree", von denen es scheint, die zweite hinzugefügt wird immer aufgerufen.
Das Problem ist, dass die aufgerufene Instanz von ClearTree() möglicherweise nicht auf den richtigen Baum verweist.
Welche Umgehungsmöglichkeiten gibt es dafür?
Hier ist der Rest des Markups:
<telerik:RadComboBox ID="cboOrgUnits" runat="server" Width="400px" ShowToggleImage="True" Style="vertical-align: middle;" EmptyMessage="Choose organisation units to group by" ExpandAnimation-Type="None" CollapseAnimation-Type="None">
<HeaderTemplate>
<div>
<span class="right" style="margin:2px"><telerik:RadButton ID="rbClear" runat="server" Text="Clear" Visible="True" OnClientClicked="ClearTree" AutoPostBack="False"/></span>
<span class="right" style="margin:2px"><telerik:RadButton ID="rbDone" runat="server" Text="Done" Visible="True" OnClick="rbDone_Click"/></span>
<div class="clear"></div>
</div>
</HeaderTemplate>
<ItemTemplate>
<div>
<telerik:RadTreeView ID="tvOrgUnits" runat="server" CheckBoxes="true" Style="z-index: 100" CheckChildNodes="True">
<Nodes>
</Nodes>
</telerik:RadTreeView>
</div>
</ItemTemplate>
<Items>
<telerik:RadComboBoxItem Text="" />
</Items>
</telerik:RadComboBox>