2012-09-17 34 views
2

動態COMBOBOX這是使用DWR呼叫如何設置值的組合框,如何設置值,以在javascript

var reportID = '<%=reportid%>'; var reportName = '<%=reportname%>'; loadReportNames(reportUserID);

function loadReportNames(reportUserID){ 
    CustomiseReportAction.getReportNames(reportUserID, addReportNamesDropDown); 
} 
function addReportNamesDropDown(resultMap){ 
    dwr.util.removeAllOptions("reportnames"); 
    dwr.util.addOptions("reportnames",resultMap); 
} 

加載組合框我設置值,以這樣的裝組合後,

document.getElementById("reportnames").value=reportID; 

但reportID沒有設置,

什麼事情是問題請幫我解決這個問題。

UPDATE : 

function addCombo() { 
    var reportID = '<%=reportid%>'; 
    var reportName = '<%=reportname%>'; 
    var textb = document.getElementById("reportnames"); 

    var option = document.createElement("option"); 
    option.text = reportName; 
    option.value = reportID; 
    option.selected="selected"; 
    try { 
     textb.add(option, null); //Standard 
    }catch(error) { 
     textb.add(option); // IE only 
    } 
    textb.value = ""; 
} 

使用上述方法它給了我沒有例外,但沒有結果。

問候

+0

如果'VAR reportID ='...被放置在一個功能,刪除'var'前'reportID ='... – Jay

+0

看到我更新的問題 –

+0

使用我無法重現的錯誤更新的信息。該選項具有正確的「<%= reportname%>」文本和「<%=reportid%>」值。通過「* reportID未設置*」,你的意思是選項添加後的結果,它沒有文本和沒有值? – Jay

回答

4

我有沒有刪除值,而是我添加了下面的代碼,它解決了我的問題。

function addCombo() { 
    var reportID = '<%=reportid%>'; 
    var options= document.getElementById('reportnames').options; 
    for (var i= 0, n= options.length; i < n ; i++) { 
     if (options[i].value==reportID) { 
      document.getElementById("reportnames").selectedIndex = i; 
      break; 
     } 
    } 
} 
4

編輯:我只是雙重檢查,它應該工作就像你做到了,所以不顧我原來的職位。您確定reportID的內容完全符合其中一個選項嗎?如果它是一個數字,而不是一個字符串,你可能想嘗試

document.getElementById("reportnames").value = "" + reportID; 


原始: 要設置組合框的選項(假設你的意思html的「選擇」),你需要設置「選中「所需選項的屬性爲true。

var select = document.getElementById("reportnames"); 
for (var i = 0; i < select.options.length; i++) 
{ 
    if (...) 
     select.options[i].selected = true; 
} 


你需要一些方法來識別的選項,我會通過保存在reportID它做到這一點。然後,你可以更換...有:

select.options[i].ReportId == reportID 


如果設置爲reportID每個選項的「ID」 -attribute你甚至可以做這樣的:

document.getElementById(reportID).selected = true; 
+0

不明白你的答案,'reportnames'是一個組合框reportID是返回的值'例如:1或2或等'已經在組合框中有一些值已經得到了相同的'reportID'值,所以我想設置該值,並將其選中。 –

+0

在我更新的問題中看到我更新的問題 –

+0

我給出了一種工作正常,但增加了重複值的方法。如何避免這個 –