无法使用asp.net通过javascript动态更改下拉列表

时间:2019-04-29 04:29:42

标签: javascript asp.net drop-down-menu

我正在尝试恢复我在2009年使用asp.net编写的旧网站。

但是,我无法通过javascript动态更改下拉菜单。我的JavaScript上有这个(我添加了一些日志):

function GetScales(scaleTypeID) {
    var id;
    if (scaleTypeID == "Natural") {
        id = 0;
    }
    else if (scaleTypeID == "Melodic") {
        id = 1;
    }
    else if (scaleTypeID == "Harmonic") {
        id = 2;
    }
    else {
        id = -1;
    }

    guitarv2.ScaleSelectionService.GetScaleList(id, OnRequestComplete, OnError);
}

function OnRequestComplete(result) {
    console.log("ggg OnRequestComplete");
    try {
        //debugger;
        var DropDownScaleName = $get('<%#GetDropDownScaleName()%>');
        console.log("ggg DropDownScaleName=" + DropDownScaleName);
        DropDownScaleName.innerHTML = "";
        for (var n = 0; n < result.length; n++) {
            var option = document.createElement("option");
            option.value = result[n].ID;
            option.innerHTML = result[n].Description;
            DropDownScaleName.appendChild(option);
        }
    }
    catch (err) {
        ErrorMsg(err);
    }
}

和行

var DropDownScaleName = $get('<%#GetDropDownScaleName()%>');

(据说)在这里调用我的网络表单

    protected string GetDropDownScaleName()
    {
        string ddlName = DropDownListScaleName.UniqueID.ToString();
        ddlName = ddlName.Replace("$", "_");
        Debug.WriteLine("ggg Dropdown = " + ddlName);
        return (ddlName);
    }

检查日志时,我看到了我不了解的内容。首先,上面的方法仅被调用一次(在页面加载时)。如果在下拉菜单中选择其他选项,则看不到新日志。我只看到这些日志一次:

ggg Dropdown = ctl00_ContentPlaceHolder2_DropDownListScaleName

当我检查代码页和添加的javascripts日志时,我看到了(我将下拉菜单覆盖在图片上)

enter image description here

我看到调用了OnRequestComplete,但是我的DropDownScaleName始终为null,所以这就是失败的原因。

但是当我检查页面代码时,下拉名称看起来应该是我的Web表单返回的名称。见下文:

enter image description here

此代码大约在10年前就可以使用。我什么都没改变,但是那时的技术是不同的。新的浏览器或最新的asp.net可能不再接受。

关于正在发生什么的任何线索?

谢谢。

0 个答案:

没有答案