2013-01-16 38 views
0

读我有一个使用JavaScript这样的填充一个ASP.Net下拉列表:使用JavaScript填充asp.net控件不能在服务器端

下拉列表:

<asp:DropDownList ID="Ddl" runat="server" AutoPostBack="true" 
     EnableViewState="true"></asp:DropDownList> 

的JavaScript用“文本”填充下拉列表的代码是:

​​

它在客户端得到填充很好。我添加了一个应该在服务器端运行的按钮。在服务器端,当我尝试检索ddl选定值时;它给出了一个例外(对象引用未设置为对象的实例)

我知道ASP.Net ddl控件在表单发送到服务器后会丢失内容吗? 我将如何解决这个问题?我试图将该值放在隐藏字段中,并尝试使用Request.Form["HiddenField"].toString();,但它给出了相同的错误。任何帮助?

+0

你在哪里试图获得选定的值?在SelectedIndexChanged或你的按钮点击事件?如果你有AutoPostBack =“true”,你不需要按钮来提交选择。 – markpsmith

+0

谢谢你的回应; Ann L在下面回复后全部清除。 thnx – ibininja

回答

2

正如您所述,您无法在客户端填充下拉列表,并让服务器端知道ListItem对象在那里。这是因为它们不会回发到服务器:只有选定的值才会被发回。

即使没有使用DropDownList,也可能有更好的运气。创建下拉菜单作为HTML select标记。一定要设置name属性(否则它不会在回发中被拾取)。然后使用Request.Form集合访问HTML select的选定值。

使用DropDownList的唯一理由是,如果您有意将其绑定到服务器端,从服务器端数据或者您想要根据服务器端计算改变其外观,但不想设置Ajax调用。如果你不想做这些事情,select可能会更好地为你服务。

+0

Thnx我打算去Cascading DDls;如果我没有任何服务器端绑定,你说什么更有意义不使用服务器端控件... – ibininja

相关问题