我對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' :) –