1

我的页面上有一个 RadDropDownTree,如下所示:

<telerik:RadDropDownTree ID="Tree1" runat="server" ButtonSettings-ShowClear="true" 
OnClientEntryAdded="EntryAdded" AutoPostBack="true" DefaultMessage="--Select--" 
DefaultValue="-1" OnEntryAdded="Tree1_EntryAdded">
<DropDownSettings AutoWidth="Enabled" CssClass="raddropdowntree" />
</telerik:RadDropDownTree>

EntryAdded 客户端事件用于在选择时折叠下拉列表,如下所示:

function EntryAdded(sender, eventArgs) {
    sender.closeDropDown();
    return true;
}

EntryAdded 服务器端事件当前为空。

我的问题是,如果我指定 OnClientEntryAdded 客户端事件,则不会触发服务器端事件 EntryAdded。回发发生在选择下拉树中的任何项目时,Page_Load 被触发,但随后控件返回到页面而不调用 EntryAdded 事件。另一个问题是,在回发之后,我选择的值被清除并恢复为默认值“--Select--”。

我也尝试将声明替换为, OnClientEntryAdded="if(!EntryAdded()) { return false; }" 但这会返回一个 JavaScript 错误,说if是出乎意料的。

如果我删除客户端事件,则会调用 EntryAdded 服务器端事件,并且下拉树的选定值也会保留。

如果有帮助,整个事情都在 RadAjaxPanel 中。

请指教。提前致谢。

4

1 回答 1

1

以下是我在 Telerik 帮助论坛上找到的解决方法。

function EntryAdded(sender, args) {
    setTimeout(function () { sender.closeDropDown(); }, 200);
}
于 2013-08-14T14:18:41.120 回答