2

这就是我使用 dwr 调用为组合框设置值的方式,

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 = "";
}

使用上述方法它没有给我任何例外,但没有结果。

问候

4

2 回答 2

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”属性,您甚至可以这样做:

document.getElementById(reportID).selected = true;
于 2012-09-17T09:08:36.803 回答
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;
        }
    }
}
于 2012-09-21T11:46:11.233 回答