2016-01-04 64 views
0

我遇到了一個問題,即使用數據庫中的數據填充我的ASP DropDownList,我嘗試使用ajax和jquery,然後添加了自己的數據。我遇到的問題是,當頁面加載下拉列表爲空時,代碼如下。獲取DropDownList來從服務器中獲取數據

HTML部分

<div id="mainitem1" class="mainItem" style="background-color: #000"> 

       <div class="box" style="top: 20%; position: absolute; width: 60%; z-index: 1; height: 70%; background-color: #e8e8e8; left: 32%; font-weight: bold; font-size: 1.3vw;"> 
        <div id="divdistSearch" style="position: relative; width: 100%; height: 100%; top: 0px; left: 0px;"> 
           <table> 
            <tr> 
             <td></td> 
             <td> 
              <asp:DropDownList ID="ddlStates" runat="server"></asp:DropDownList> 
             </td> 
            </tr> 
           </table> 
        </div> 
       </div> 
       <img id="mainitem1-image" alt="" src="/powertap/images/Background1.jpg" style="position: absolute; top: 0px; left: 0px" /> 
       <img id="mainitem1-image1" alt="" src="/powertap/images/taps-and-text.png" style="position: absolute; margin-left: auto; margin-right: auto; left: 0; right: 0;" /> 
      </div> 
     </div> 

這裏是Jquery的部分,我有這樣一個separaet .js文件,但我已經掛了,在頭部分

$(function() { 
$.ajax({ 
    type: "POST", 
    url: "Default.aspx/GetStates", 
    data: '{}', 
    contenType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: function (r) { 
     var ddlStates = $("[id*=ddlStates]"); 
     ddlStates.empty().append('<option selected="selected" value="0">Please select</option>'); 
     $.each(r.d, function() { 
      ddlStates.append($("<option></option>").val(this['Value']).html(this['Text'])); 
     }); 
     } 
    }); 
}); 

這裏是它在VB中的代碼部分,不能找出我缺少的東西。

Imports System.Data 
Imports System.Web.Services 
Imports System.Configuration 
Imports System.Data.SqlClient 
Public Class _Default103 
    Inherits System.Web.UI.Page 
       Protected Sub Page_Load(ByVal sender As Object, ByVal e As  System.EventArgs) Handles Me.Load 
    If Not Session("isLoggedIn") Then 
     price_file.Visible = False 
     checkstock_icon.Visible = False 
     checkstock_title.Visible = False 
    End If 
    End Sub 

<WebMethod()> _ 
Public Shared Function GetStates() As List(Of ListItem) 
    Dim query As String = "SELECT Id, State FROM States" 
    Dim constr As String = ConfigurationManager.ConnectionStrings("DistData").ConnectionString 
    Using con As New SqlConnection(constr) 
     Using cmd As New SqlCommand(query) 
      Dim states As New List(Of ListItem)() 
      cmd.CommandType = CommandType.Text 
      cmd.Connection = con 
      con.Open() 
      Using sdr As SqlDataReader = cmd.ExecuteReader() 
       While sdr.Read() 
        states.Add(New ListItem() With { 
           .Value = sdr("Id").ToString(), _ 
           .Text = sdr("State").ToString() _ 
           }) 
       End While 
      End Using 
      con.Close() 
      Return states 
     End Using 
    End Using 
    End Function 
End Class 

回答

0

我在您的示例中看不到任何使用JSON的值。但無論如何,你並沒有首先綁定你的下拉列表。初始綁定可以添加到您的頁面加載事件中。

Protected Sub Page_Load(ByVal sender As Object, ByVal e As  System.EventArgs) Handles Me.Load 
If !IsPostBack//Make sure this is only filled if the page is not posted back 
GetStates();