C# 将dropdownlist绑定到数据集
我从一个存储过程中填充一个数据表,然后用我的数据表填充一个数据集,但是我得到的对象引用没有设置为ddl.DataSource=ds行的对象实例 如何解决绑定问题C# 将dropdownlist绑定到数据集,c#,asp.net,code-behind,sqlconnection,C#,Asp.net,Code Behind,Sqlconnection,我从一个存储过程中填充一个数据表,然后用我的数据表填充一个数据集,但是我得到的对象引用没有设置为ddl.DataSource=ds行的对象实例 如何解决绑定问题 using (var scTyche = new SqlConnection(ConfigurationManager.ConnectionStrings["KondorConnectionConnectionString"].ConnectionString)) { var ddl = (DropDownLis
using (var scTyche = new SqlConnection(ConfigurationManager.ConnectionStrings["KondorConnectionConnectionString"].ConnectionString))
{
var ddl = (DropDownList)GridView1.FindControl("DropDownListFolders1");
var da = new SqlDataAdapter();
var dt = new DataTable();
var ds = new DataSet();
scTyche.Open();
var cmdTyche = scTyche.CreateCommand();
cmdTyche.CommandType = CommandType.StoredProcedure;
cmdTyche.CommandText = "dbo.spGetFolders";
cmdTyche.CommandTimeout = 60;
cmdTyche.Parameters.Add("@nBranchId", SqlDbType.Int).Value = intBranchId;
da.SelectCommand = cmdTyche;
da.Fill(dt);
ds.Tables.Add(dt);
ddl.DataSource = ds;
ddl.DataTextField = "strShort";
ddl.DataValueField = "nId";
ddl.DataBind();
cmdTyche.Parameters.Clear();
scTyche.Dispose();
scTyche.Close();
}
我通常只是从适配器填充数据集。ds包含一个表集合。根据存储过程返回的结果集的数量,这些结果集将反映在集合表[0]、表[1]等中。。。 在你的情况下,我假设它只返回1。使用这种方法,您不需要添加DataTable变量 此外,dispose和close有点冗余,因为using语句的设计正好是通过IDisposable接口来处理这个问题
// example
da.Fill(ds);
if (ds.Tables.Count > 0)
{
ddl.Datasource = ds.Tables[0];
// etc....
}
表添加不正确,或者ddl为null。你能在var ddl=。。。然后跨过去查看ddl中的值?这将有助于回答问题。检查包含表的ds是否有行。您可以这样尝试:ifds.Tables[0].rows.count>0@kumarch1ds不可能为null,因为他已经用新的数据集实例化了它。它可能是空的,但不会引发NullReferenceException。@关于您的编辑,kumarch1同样不会引发OP询问的异常。。。它只会在下拉列表中不显示任何行。。。最有可能的原因是ddl为null,因此尝试访问它的DataSource属性会引发NullReferenceException