2014-07-08 104 views
0

我有一個小網站,我試圖從數據庫中抓取某個列(SQL Server Management Studio)並將這些值插入到下拉列表中。從數據庫中獲取信息並動態插入到下拉列表中

我的HTML代碼用一個下拉列表加載一個簡單的頁面。

<html> 
<body onload = "Location();"> 
    <h4>Home Page</h4> 
     CompanyName 
     <select id="company" name="C1" > 
      <option>Pick A Location</option> 
     </select> 
</body> 
<html> 

在我的JavaScript函數做任何「工作」之前,它導航到一個C#頁面。我調試了C#代碼,它確實輸出。它顯示:

"<root>\n<CompanyName>\n\t<option>AAA</option>\n\t<option>BBB</option>\n\t<option>CCC</option>\n\t<option>DDD</option>\n\t<option>EEE</option>\n\t<option>FFF</option>\n\t<option>GGG</option>\n\t<option>HHH</option>\n</CompanyName>\n</root>" 

這只是我需要輸入到下拉列表中的數據庫的列。 JavaScript函數應該抓住這段代碼,並深入到選項部分,並將每個選項逐一放入下拉列表中。出於某種原因從c#頁面導航到javaScript頁面之間,我失去了xml信息。有什麼我丟失或有什麼不正確的?謝謝。

function Location() { 

    $.ajax({ 
     url: "Test.aspx", 
     beforeSend: function (xhr) { 
      xhr.overrideMimeType("text/plain; charset=x-user-defined"); 
     } 
    }).done(function (data) { 
     if (console && console.log) { 
      xml = data; 
      xmlDoc = $.parseXML(xml); 
      $xml = $(xmlDoc); 
      var settingHTML = ""; 
      settingHTML += "<option value = 'null' > Pick a Location </option>"; 
      $xml.find('root').each(function() { 
       $xml.find('CompanyName').each(function() { 
        // one at a time 
        $(this).children().each(function() { 
         settingHTML += "<option value='" + $(this).text() + "' >" + $(this).text() + "</option>"; 
        }); 
       }); 
      }); 
      $("#company").html(settingHTML); 
     } 
    }); 
} 

,我也要去加我的C#代碼,因爲它似乎,這可能是我返回的字符串可能

public partial class Test : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     string root = "<root>\n"; 
     root += fill_company(); 
     root += "</root>"; 
     Response.Write(root); 
    } 

    protected string fill_company() 
    { 
     OdbcDataReader reader; 
     string myConnString = "DSN=DevSql12-1;"; 
     OdbcConnection conn = new OdbcConnection(myConnString); 
     OdbcCommand mycommand = new OdbcCommand(); 
     mycommand.Connection = conn; 
     conn.Open(); 
     mycommand.CommandText = "SELECT CompanyName FROM [PS_Settings].[cams].[Client];"; 
     reader = mycommand.ExecuteReader(); 
     string CompanyLocation = ""; 
     CompanyLocation += "<CompanyName>\n"; 
     object[] meta = new object[1]; 
     bool read; 
     if (reader.Read() == true) 
     { 
      do 
      { 
       int NumberOfColumns = reader.GetValues(meta); 
       for (int i = 0; i < NumberOfColumns; i++) 
       { 
       CompanyLocation += "\t<option>" + meta[i].ToString() + "</option>\n"; 
       } 
       read = reader.Read(); 
      } while (read == true); 
     } 
     CompanyLocation += "</CompanyName>\n"; 
     return CompanyLocation; 
    } 
} 
+0

這似乎工作:http://jsfiddle.net/K75eC/ –

+0

由於某種原因,在c#代碼中的「根」字符串是一個xml字符串,不會被髮送到「數據」變量js的「位置」功能 – ItalianStallion

+0

你應該回顧一下:http://stackoverflow.com/questions/543319/how-to-return-xml-in-asp-net –

回答

0

的問題是,我並沒有表現出實際的輸出方式(實際上並不是AAA,BBB),但是我錯誤的原因是因爲其中一個選項有'&',我忘了逃避它。

相關問題