【发布时间】:2013-10-11 14:35:53
【问题描述】:
我对 Web 开发还很陌生,遇到了以下我不太明白的问题。使用 Visual Basic 在 VS2010 中工作。
我有一个页面(aspx),它有一个gridview,它有几列,包括一个带有复选框的列和一个“action”列,它有一个空的、隐藏的下拉列表开始(每一行都有这个)。
每当用户勾选一个框时,我都会使用 AJAX 调用从服务器检索一些值(这是我第一次尝试 AJAX :-)),并使用这些值在“操作”列中填充下拉列表选定的行。到目前为止一切顺利。
然后用户可以在下拉列表中进行选择,然后他按下一个按钮(上传),并进行回发以处理信息。
但是,在后面的代码中,我无法检索下拉列表中添加的项目(更不用说选择的值了)。我可以检索下拉列表,但它没有任何项目。
在谷歌上搜索了一段时间后,我意识到当表单发布到服务器时,客户端的更改并没有持续存在,我理解这一点——但这似乎也很奇怪。下拉菜单是在页面创建时创建的,为什么不存储javascipt添加的项目呢?特别是因为我发现一些变通方法使用隐藏字段来存储添加的项目或选定值。如果我可以将它们存储在隐藏字段中,为什么我不能将它们存储在实际的下拉列表中?
我显然不明白网站是如何工作的......但这意味着,在最初加载页面后,您可以更改下拉列表和列表框等中的值,但这些在服务器端永远不可用?
编辑:一些代码;第一个 javascript-sn-p 我如何添加通过 AJAX 调用检索到的不同值:
var drop = row.findElement("ddlAction"); //find the dropdownelement in the DOM
for (j = 0; j < dropdownitems.length; j++) { //add all the options from xml
option = document.createElement("option");
option.text = dropdownitems[i].getAttribute("text");
option.value = dropdownitems[i].getAttribute("value");
drop.add(option, null);
}
这很好用,下拉列表已填满,我可以选择。但是当页面发布时,我在服务器代码中执行以下操作:
Dim SelCount As Integer = LocalFilesGrid.SelectedItems.Count
If SelCount >= 0 Then
For Each dataItem In LocalFilesGrid.SelectedItems
Dim drop As DropDownList
drop = dataItem.FindControl("ddlAction")
If drop.Items.Count = 0 Then 'always zero
MsgBox("Nope")
End If
Next
End If
我希望能够遍历网格的选定行,获取相应的下拉列表和选定值。
【问题讨论】:
-
SOF 的人会更有兴趣看到
code please:)
标签: javascript asp.net ajax vb.net visual-studio-2010