在我的应用程序中,我创建了一个ajax autocompelete扩展器文本框。一旦用户选择了值,我想在我的下拉列表中插入该值。 用于此目的的代码是:
function GetCode(source, eventArgs) {
var hfield = $get('<%=this.HiddenID.ClientID%>');
hfield.value = eventArgs.get_value();
//hfield has the value selected in the autocomplete text box
var abc = document.getElementById('<% =DropDownList2.ClientID %>');
for (var i = 0; i < abc.length ; i++) {
alert(abc.options[i].value);
if (abc.options[i].value == hfield.value) {
abc.options[i].selected = true;
break;
}
}
}
这里的问题是:我的值没有显示在下拉列表中。 当我尝试调试代码时,我意识到该值确实出现在下拉列表中,但是当此代码退出时,该值将从下拉列表中消失。
我不知道为什么价值观正在消失!请帮忙!谢谢!
答案 0 :(得分:3)
它消失了,因为你最初在服务器端绑定数据,当你发出ajax请求将新记录插入下拉列表时,DropDownList的ViewState不知道这个新值,因此呈现它是什么以前有过。
答案 1 :(得分:0)
如果要通过javascript在客户端修改服务器端下拉列表的元素集合,则可以在下次回发时获得事件验证错误。如果这种行为不是因为您可以通过xss攻击修改这些控件集合,并将额外的附加值提交给服务器,那将是危险的。