通过javascript更改dropdownlist的值后,asp.net中dropdownlist的值消失

时间:2013-06-19 13:48:29

标签: c# javascript drop-down-menu

在我的应用程序中,我创建了一个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;
             }
         }
     }

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

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

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

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