在后面的代码中通过jquery添加列表框项的问题

时间:2011-01-31 08:57:35

标签: asp.net jquery listbox

我有一个asp.net列表框控件,其中我使用Jquery使用一些代码来填充项目,例如.. $("#MylistBox").append("<option value='somevalue'>Someitem</option>

动态。  但在我使用的代码背后 无论添加多少项,MylistBox.Items始终显示Count 0

有人可以帮我吗?

3 个答案:

答案 0 :(得分:5)

在不知道实际情况的情况下......我假设您的目标实际上是通过迭代它们或其他东西来获取动态添加的项目......

使用JavaScript / jQuery在客户端完成的任何动态添加的DOM元素都不会自动反映到服务器端。您需要以不同的方式对它们进行序列化,并在回发期间将它们推回到服务器端。一种方法是通过序列化隐藏输入中Select元素的所有选项。如果您希望更容易访问,可以将隐藏输入标记为runat = server,否则请使用Request.Form [“...隐藏输入NAME属性此处... NOT ID ...”]以获取超值。在你得到它之后,你可以用你想做的任何事情。

我想你的隐藏输入应该有一些价值,如:“1:第一个值,2:第二个值,3:......”。只需做一些字符串操作就可以将它们拆分并迭代它们。

答案 1 :(得分:1)

后面的代码只会知道在服务器上创建时添加到Listbox对象的项目。这些项目将保存在ViewState中,并在回发期间重新填充 因此,在客户端上动态创建的项目对服务器端代码不可见 如果您需要在服务器端代码中获取所选值,那么您将需要在回发期间查询Request.Form["<Listbox client id>"]值。
如果您需要检索添加到客户端列表框中的所有项目,我建议将它们全部添加到隐藏字段值作为分隔的字符串数组,并再次使用Request.Form["<hidden field id>"].

检索它们

答案 2 :(得分:0)

string values = Request.Form[ListBox_SelectedSubject.UniqueID];