我在 UpdatePanel 中有一个 RadlistBox,并试图在 onkeydown 事件中添加一些额外的逻辑。我设法通过 RadListBox.get_item(0).set_selection(true/false) 方法(在控件中引入一些额外的导航规则)完成了我需要完成的一半,但是活动项目标记保留在先前选择的项目上。如果我从项目中手动删除 rlbActive 类,它看起来像是通过了一些其他事件,该事件稍后再次添加该类(可能是 SelectionIndexChanging 或 SelectionIndexChanged)。控制文档中的一些方法似乎根本不起作用,这可能与更新面板有关。任何有机会处理 Radlistbox 的人都能够建议添加自定义导航的正确方法(构建版本不符合我的要求),或者至少能够指出如何在没有它的情况下更改活动项目导致奇怪的错误?下面的代码是给出基本的想法。
<asp:UpdatePanel ID="panelId" runat="server">
<ContentTemplate>
<telerik:RadListBox ID="radListBoxId" runat="server"
SelectionMode="Multiple"
TabIndex="1"
AutoPostBack="True"
OnClientSelectedIndexChanged="OnClientSelectedIndexChanged"
OnClientSelectedIndexChanging="OnClientSelectedIndexChanging"
OnClientLoad="OnClientLoad">
</telerik:RadListBox>
</ContentTemplate>
</asp:UpdatePanel>
function OnClientLoad(sender, args) {
$telerik.$(".rlbGroup", sender.get_element())
.bind("keydown", function (e) {
onKeyDown(sender, e);
});
}
function OnClientSelectedIndexChanging(sender, args) {
}
function OnClientSelectedIndexChanged(sender, args) {
}
function onKeyDown(event){
//custom navigation logic
//what properties or methods of the RadListBox can be used to change the active item?
var currentItem = radlistbox.Get_selected();
var newItem = //e.g find currentindex +1 and select item by index
currentItem .set_selection(false);
newItem.set_selection(true); //selection is moved but active item is still currentItem
}