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;
}
}
這似乎工作:http://jsfiddle.net/K75eC/ –
由於某種原因,在c#代碼中的「根」字符串是一個xml字符串,不會被髮送到「數據」變量js的「位置」功能 – ItalianStallion
你應該回顧一下:http://stackoverflow.com/questions/543319/how-to-return-xml-in-asp-net –