我们有一个自定义的Telerik RadComboBox,它通过从下拉列表中选择名称,在组合框的文本框字段中构建由分号分隔的文本字符串。我们希望改进这一点并复制类似于Outlook的行为,其中可以从文本框中选择和删除单个名称。选定的名称存储在隐藏的输入字段中。另一个隐藏字段带有CSV的ID列表。两个隐藏字段都被视为数组,它们的值与索引具有一对一的关系。我们正在考虑的方法是在每个名称周围包含某种标记,例如跨度,这样当用户选择特定名称时,整个名称将被突出显示,然后可以以某种方式被检测到。这可以通过使用ItemTemplate来完成吗?
OnClientSelectedIndexChanged事件触发显示的javascript,并将名称列表追加到文本框中。
function RecipientSelectedIndexChanged(sender, args) {
var combo = $find('<%= rcbRecipients.ClientID%>');
var userid = combo.get_selectedItem().get_value();
var name = combo.get_selectedItem()._text;
var listID = $get("<%= hdnRecipientIdList.ClientID%>").value;
var listName = $get("<%= hdnRecipientNameList.ClientID%>").value;
var listIDArray = new Array();
var listNameArray = new Array();
if (listID != '') {
listIDArray = listID.split(',');
listNameArray = listName.split('; ');
}
listNameArray.pop();
for (var i = 0; i < listNameArray.length; i++) {
listNameArray[i] = listNameArray[i] + '; ';
}
var x = listIDArray.indexOf(name);
if (x == -1) {
listIDArray.push(userid);
listNameArray.push(name + '; ');
listID = listIDArray.toString();
var y = listNameArray.join('');
listName = y;
}
$get("<%= hdnRecipientIdList.ClientID%>").value = listID;
$get("<%= hdnRecipientNameList.ClientID%>").value = listName;
combo.trackChanges();
var item = combo.findItemByText(name);
item.hide();
combo.set_text(listName);
combo.commitChanges();
combo.showDropDown();
}
&#13;