【问题标题】:Problem getting list box items added through jquery in code behind在后面的代码中通过 jquery 添加列表框项目时出现问题
【发布时间】:2011-01-31 08:57:35
【问题描述】:

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

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

谁能帮我解决这个问题?

【问题讨论】:

  • 后面代码的目的是什么?您想遍历动态添加的项目还是只查找列表中项目的计数?
  • 我想迭代..我的意思是我没有在代码中得到这些项目..

标签: asp.net jquery listbox


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 喜欢ListBox myListBox= (ListBox)Request,Form["MylistBox"];?
    • 不完全是,Request.Form 返回一个 FormCollection 对象,该对象有效地包含一个键/值对的集合,这些键/值对代表所有提交的表单数据,即 html 输入、选择等字段的值。 Request.Form["MyListbox"] 将返回所选项目的字符串值。
    【解决方案3】:
    string values = Request.Form[ListBox_SelectedSubject.UniqueID];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-02
      • 1970-01-01
      • 2011-08-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多