簡體   English   中英

ASP.NET-使用JS設置DropDownList的值和文本屬性

[英]ASP.NET - Set DropDownList's value and text attributes using JS

我的ASCX頁面之一中有一個Dropdownlist控件。

<asp:DropDownList ID="demoddl" runat="server" onchange="apply(this.options[this.selectedIndex].value,event)" onclick="borderColorChange(this.id, 'Click')" onblur="borderColorChange(this.id)" CssClass="dropDownBox" DataTextField="EmpName" DataValueField="EmpID">

我的目標是使用“ EmpID”作為值屬性和“ EmpName”作為文本屬性填充此下拉列表。

提取這些“ EmpName”和“ EmpID”值的JS代碼如下:

$(document).ready(function () 
{
loadSavedFreeTextSearchCombo();
}


function loadSavedFreeTextSearchCombo() {

    var params = {
        loginID: $('#loginID').val()
    };

    var paramsJSON = $.toJSON(params);

    $.ajax({
        type: "POST",
        url: _WebRoot() + "/Ajax/EmpDetails.asmx/GetEmp",
        data: paramsJSON,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (data) {
            $('#demoddl').empty();
            $('#demoddl').append($("<option></option>").val(0).html("--Employee Names --"));
            $.each(data.d, function (index, value) {
                $('#demoddl').append($("<option></option>").val(value.EmpID).html(value.EmpName));
            });

        },
        error: function () {
            showError("Failed to load Saved Search Data!");

        }
    });

}

盡管整個代碼運行都沒有任何錯誤(EmpDetails.asmx方法成功返回有效數據),但dropdwonlist並沒有填充返回的必需數據。

我究竟做錯了什么? 我想我的“成功”事件代碼出了點問題

由於您打算將DropDownList服務器控件ID用作選擇器,因此有必要設置ClientIDMode="Static" ,尤其是在使用<asp:ContentPlaceHolder><asp:Content>來防止ASPX引擎創建<select> id屬性包含下拉菜單的占位符名稱的元素:

<asp:DropDownList ID="demoddl" runat="server" ClientIDMode="Static"
                  onchange="apply(this.options[this.selectedIndex].value,event)"
                  onclick="borderColorChange(this.id, 'Click')"
                  onblur="borderColorChange(this.id)" 
                  CssClass="dropDownBox" DataTextField="EmpName" DataValueField="EmpID">

如果由於某些原因不能使用ClientIDMode="Static"屬性(例如, 避免使用具有相同ID的多個<select>元素 ),請使用控件的ClientID屬性作為選擇器,即<%= demoddl.ClientID %>

$.ajax({
    type: "POST",
    url: _WebRoot() + "/Ajax/EmpDetails.asmx/GetEmp",
    data: paramsJSON,
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (data) {
        $('#<%= demoddl.ClientID %>').empty();
        $('#<%= demoddl.ClientID %>').append($("<option></option>").val(0).html("--Employee Names --"));

        // recommended to check against undefined here
        $.each(data.d, function (index, value) {
            $('#<%= demoddl.ClientID %>').append($("<option></option>").val(value.EmpID).html(value.EmpName));
        });

    },
    error: function () {
        showError("Failed to load Saved Search Data!");
    }
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM