从数据库中获取信息并动态插入下拉列表

时间:2014-07-08 20:23:15

标签: c# javascript html ajax xml

我有一个小网站,我试图从数据库中获取某个列(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函数执行任何&#34; work&#34;它导航到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;
    }
}

1 个答案:

答案 0 :(得分:0)

问题是我没有显示实际输出(实际上并不是AAA,BBB),但我错误的原因是因为其中一个选项有&#39;&amp;& #39;,我忘了逃避它。