1

在我的应用程序中,我创建了一个 ajax 自动完成扩展器文本框。一旦用户选择了值,我想将该值插入到我的下拉列表中。为此目的的代码是:

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;
             }
         }
     }

这里的问题是:我的值没有显示在下拉列表中。当我尝试调试代码时,我意识到该值确实出现在下拉列表中,但是当此代码退出时,该值从下拉列表中消失。

我不知道为什么价值观正在消失!请帮忙!谢谢!

4

2 回答 2

3

它消失了,因为您最初是在服务器端绑定数据,并且当您发出将新记录插入下拉列表的 ajax 请求时,DropDownList 的 ViewState 不知道这个新值,因此呈现它之前的内容。

于 2013-06-19T13:54:03.147 回答
0

如果你想通过 javascript 在客户端修改服务器端下拉列表的元素集合,你可能会在下一次回发时得到 eventvalidation 错误。如果不是这种行为是很危险的,因为您可以通过 xss 攻击修改这些控件集合,并将您的额外附加值提交给服务器。

于 2013-06-19T14:02:38.140 回答