【问题标题】:Unable to bind dropdowlist using jQuery in asp .net page无法在 asp .net 页面中使用 jQuery 绑定下拉列表
【发布时间】:2015-01-16 12:05:20
【问题描述】:

我在 asp .net 中创建了一个页面,并在其中添加了 jquery 引用,并将 Web 服务托管在另一台服务器上。我有使用 jQuery 绑定的下拉列表,但它没有绑定,我也无法确定错误是什么。我的代码。

<script src="Script/jquery-1.7.1.min.js" type="text/javascript"></script>
<table>
   <tr>
       <td>
            <asp:DropDownList ID="ddl" runat="server">
            </asp:DropDownList>
            <asp:HiddenField ID="hf" runat="server" />
        </td>
    </tr>
</table>

<script language="javascript" type="text/javascript">
    $(document).ready(function () {

        $('#ddl').append(
                $('<option></option>').val('0').html('Please Wait...')                    
            );
        $.ajax({
            url: "http://***.*.1.165:91/MastersService.asmx/GetDocTypeList",
            data: "{}",
            type: "POST",
            dataType: "json",
            contentType: "application/json; charset=utf-8",
            success: OnSuccess,
            error: OnError
        });

        // for get selected value from code behind
        $('#ddl').change(function () {
            $('#hf').val($('#ddl').val());
        });

    });

    function OnSuccess(data) {
        $('#ddl').empty();
        var d = data.d;
        var dropdown = $('#ddl');
        for (var i = 0; i < d.length; i++) {
            dropdown.append(
                 $('<option></option>').val(d[i].docCode.toString()).html(d[i].docName.toString())
                );
        }
        //for keep data after postback
        $('#ddl').val($('#hf').val());
    }
    function OnError() {
        alert("Failed!");
    }

</script>

网络方法..

[System.Web.Script.Services.ScriptService]
public class MastersService : System.Web.Services.WebService
{ 
    [WebMethod]
    public List<DocType> GetDocTypeList()
    {

        DataTable dt = MM.DocumentTypeList();
        List<DocType> doctype = new List<DocType>();
        if (dt.Rows.Count > 0)
        {
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                DocType objst = new DocType();
                objst.docCode = Convert.ToString(dt.Rows[i]["docCode"]);
                objst.docName = Convert.ToString(dt.Rows[i]["docName"]);
                doctype.Insert(i, objst);
            }

        }
        return doctype;
    }
 }

【问题讨论】:

  • 请告诉我如何得到确切的错误。

标签: jquery asp.net web-services asp.net-ajax


【解决方案1】:

当您使用 ASP.NET 并且ddl 是一个服务器控件时,您需要使用Control.ClientID

&lt;%= ddl.ClientID %&gt; 将获取由 ASP.NET 生成的 HTML 标记的控件 ID。

使用

$("#<%= ddl.ClientID %>").change(function() {
    //Your code
});

你可以使用ClientIDMode.Static模式

喜欢

   <td>
        <asp:DropDownList ID="ddl" ClientIDMode="Static" runat="server">
        </asp:DropDownList>
        <asp:HiddenField ID="hf" runat="server" />
    </td>

那么你可以简单地使用$('#ddl')

【讨论】:

  • 是的,我使用的是 asp .net,但我没有使用任何母版页,所以我不需要使用 Control.ClientID。
  • @Raghubar,Control.ClientID 与母版页无关Gets the control ID for HTML markup that is generated by ASP.NET.
  • 这是我的页面来源。核实。
  • 你不需要带有 HTML 控件的Control.ClientID
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-06
相关资源
最近更新 更多