我对Web开发很新,而且我遇到了以下问题,我不太明白。在VS2010中使用visual basic工作。用javascript添加项目到下拉列表并坚持回发
我有一个页面(aspx),它有一个gridview,它有几列,包括一个带有tickbox和一列'action'的列,它有一个空的,隐藏的下拉列表(每行都有这个)。
每当用户勾选一个框时,我会通过AJAX调用(这是我第一次尝试AJAX :-))从服务器检索一些值,并使用这些值在“操作”列中填充下拉列表选定的行。到现在为止还挺好。
然后,用户可以在下拉列表中进行选择,然后按下按钮(上传),然后执行回发以处理信息。
但是,在后面的代码中,我无法检索下拉列表中添加的项目(更不用说选定的值)。我可以检索下拉列表,但它没有任何项目。
谷歌搜索了一段时间后,我意识到客户端的变化不会在表单发布到服务器时持久化,我知道 - 但它也似乎很奇怪。下拉菜单是在创建页面时创建的,为什么它不存储javascipt添加的项目?特别是因为我发现一些解决方法使用隐藏的字段来存储添加的项目或selectedvalue。如果我可以将它们存储在隐藏字段中,为什么我不能将它们存储在实际的下拉列表中?
我很明显不理解网站是如何工作的......但这意味着,在页面初始加载后,您可以更改下拉列表框和列表框等的值,但这些将永远不可用的服务器端?
编辑:一些代码;第一个JavaScript的代码片段我如何通过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
我希望能够遍历网格的选定行,得到相应的下拉列表和的SelectedValue。
SOF的人会更有兴趣看到'code please' :) –