0

// asp代码

   <asp:DropDownList ID="DropDownList1" runat="server" DataTextField="fullname" DataValueField="username" AutoPostBack="True" Width="125px" Height="22px"></asp:DropDownList>

// 后面的代码

 SqlConnection myConnection = new SqlConnection("Server=xyz;Database=db;Uid=db;Pwd=12345");
 myConnection.Open();         
 SqlDataReader myReaderddl = null;
 SqlCommand myCommandddl = new SqlCommand("SELECT [username], [fullname] FROM [qa_users]", myConnection);
 myReaderddl = myCommandddl.ExecuteReader();
 myReaderddl.Read();
 ddlrep.DataSource = myReaderddl;                    
 ddlrep.DataValueField = "[username]";
 ddlrep.DataTextField = "[fullname]";
 ddlrep.DataBind();
 myReaderddl.Close();
4

4 回答 4

2

我还没有测试过这段代码,但它应该可以工作。

using (var myConnection = new SqlConnection("Server=xyz;Database=db;Uid=db;Pwd=12345"))
{
    using (var myCommandddl = new SqlCommand("SELECT [username], [fullname] FROM [qa_users]", myConnection))
    {
        var table = new DataTable();

        using(var myAdapter = new SqlDataAdapter(myCommandddl))
            myAdapter.Fill(table);

        ddlrep.DataSource = table;
        ddlrep.DataValueField = "username";
        ddlrep.DataTextField = "fullname";
        ddlrep.DataBind();
    }
}

我做了一些更改,您应该注意:

于 2012-07-10T13:20:43.107 回答
0

更新您的代码隐藏,如下所示:

if (!IsPostBack)
{

   SqlConnection myConnection = new SqlConnection("Server=xyz;Database=db;Uid=db;Pwd=12345");
    try 
    {
       myConnection.Open();         
       SqlDataReader myReaderddl = null;
       SqlCommand myCommandddl = new SqlCommand("SELECT [username], [fullname] FROM [qa_users]", myConnection);
       myReaderddl = myCommandddl.ExecuteReader();
       if (myReaderddl.HasRows)
       {
          ddlrep.DataSource = myReaderddl;                    
          ddlrep.DataValueField = "username";
          ddlrep.DataTextField = "fullname";
          ddlrep.DataBind();
       }
    }
    finally 
    {
       if (myConnection != null)
       {
          myConnection.Close();
       }
    }
}
于 2012-07-10T12:46:29.727 回答
0

你的 DropDownlist 应该是这样的:

<asp:DropDownList ID="ddlrep" runat="server" Width="200px" ></asp:DropDownList>

并在代码后面,页面加载或任何方法中

SqlConnection myConnection = new SqlConnection("Server=xyz;Database=db;Uid=db;Pwd=12345");
 myConnection.Open();         
 SqlCommand myCommandddl = new SqlCommand("SELECT username, fullname FROM qa_users", myConnection);
 SqlDataReader myReaderddl = myCommandddl.ExecuteReader();
 if(myReaderddl.HasRows)
 {
 ddlrep.DataSource = myReaderddl;                    
 ddlrep.DataValueField = "username";
 ddlrep.DataTextField = "fullname";
 ddlrep.DataBind();
 }
 myReaderddl.Close();

在页面加载中将代码放在此块下

if (!IsPostBack)
        {
        }
于 2012-07-10T12:56:51.670 回答
0

这是我的一些旧代码,所以它并不漂亮(这些天我使用 EF),但尝试这样的事情:

SqlCommand cmd = new SqlCommand("SELECT [username], [fullname] FROM [qa_users]", myConnection);

cmd.Connection.Open();
SqlDataReader data_table = null;
data_table = cmd.ExecuteReader();
ddlrep.DataSource = data_table;
ddlrep.DataValueField = "username";
ddlrep.DataTextField = "fullname";
ddlrep.DataBind();
data_table.Close();
cmd.Connection.Close();
cmd.Connection.Dispose();

我从一个工作项目中提取了这个,所以它应该可以工作。

于 2012-07-10T13:24:10.733 回答