将下拉列表绑定到数据集
本文关键字:数据集 绑定 下拉列表 | 更新日期: 2023-09-27 18:10:09
我正在从存储过程中填充一个数据表,然后用我的数据表填充一个数据集,但我得到"对象引用不设置为对象的实例"在行与ddl。DataSource = ds.
如何解决绑定问题?
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....
}