Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 数据未显示在动态下拉列表asp.net&C中(也没有错误)_C#_Asp.net - Fatal编程技术网

C# 数据未显示在动态下拉列表asp.net&C中(也没有错误)

C# 数据未显示在动态下拉列表asp.net&C中(也没有错误),c#,asp.net,C#,Asp.net,//aspx代码 <asp:DropDownList ID="DropDownList1" runat="server" DataTextField="fullname" DataValueField="username" AutoPostBack="True" Width="125px" Height="22px"></asp:DropDownList> 将codebehind更新为如下所示: if (!IsPostBack) { SqlConnecti

//aspx代码

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

将codebehind更新为如下所示:

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();
       }
    }
}

您的下拉列表应如下所示:

<asp:DropDownList ID="ddlrep" runat="server" Width="200px" ></asp:DropDownList>
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();
在pageload中,将代码放在该块下

if (!IsPostBack)
        {
        }

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

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();
    }
}
我做了一些更改,您应该注意:

使用USING语句。这提供了许多好处,例如自动调用IDisposable对象上的Dispose,而不管是否引发异常。在我看来,这是一个很好的视觉效果,可以显示何时何地放置一个对象。 不直接使用SqlDataRader,而是使用SqlDataAdapter填充表格:
这是我的一些旧代码,所以我现在使用EF不太好,但请尝试以下内容:

<asp:DropDownList ID="ddlrep" runat="server" Width="200px" ></asp:DropDownList>
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();

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

您将这个放在代码中的什么地方?页面加载?您能否提供描述DDL的标记以及代码背后的上下文?您在哪里/如何定义ddlrep?需要更多信息。我为您整理了代码是的,我在第页中有此代码。\u加载事件表中是否有数据也检查它当您在MyReaderDl=MyCommand和Dl.ExecuteReader上中断时,是否进入if块?正在返回数据吗?数据被拉入但它没有绑定到下拉列表Torres::仍然没有显示只是为了好玩,而不是进行绑定,如果您将绑定替换为:whileMyReaderDl.Read{ddlRep.Items.Addnew ListItemMyReaderDl[fullname],MyReaderDl[username];},它能工作吗?它是否迭代任何内容?无论哪种方式,它都会拉取数据,但不会显示。如果可能,则调试它..并查看它是否进入if块中..使用修改后的查询删除括号..我已调试,数据在那里,但它没有绑定。好的,做一件事删除下拉列表并粘贴我提到的用于下拉的代码。第一件。我也尝试了你以前的代码。有一件事是肯定的,它正在拉取数据,但它没有显示sqldatareader myReaderddl=null;SqlCommand myCommandddl=新的SqlCommandSELECT用户名,来自qa_用户的全名,myConnection;myReaderddl=myCommandddl.ExecuteReader;myReaderddl.Read;如果myReaderddl.HasRows{ddlrep.DataSource=myReaderddl;ddlrep.DataValueField=username;ddlrep.DataTextField=fullname;ddlrep.DataBind;}myReaderddl.Close;这起作用了。我不确定是什么问题。但效果很好。Thanks我认为问题是试图将SqlDataReader分配给DataSource属性。DataSource属性需要IEnumerable、IListSource、IDataSource或IHierarchicalDatasource的实例。
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();
    }
}