我在.aspx网页上有一个ListBox,我试图从数据库中获取数据。查询采用存储过程的形式,以下是我正在使用的ListBind(string queryPart)
方法。
private void ListBind(string queryPart)
{
SqlDataAdapter adp = new SqlDataAdapter("Retrieve", ConfigurationManager.ConnectionStrings["cn"].ConnectionString);
DataSet ds = new DataSet();
adp.SelectCommand.CommandType = CommandType.StoredProcedure;
adp.SelectCommand.Parameters.Add("@s1", SqlDbType.NVarChar, 255).Value = queryPart;
adp.SelectCommand.Parameters.Add("@s2", SqlDbType.NVarChar, 255).Value = DropDownList1.SelectedItem.ToString();
adp.Fill(ds);
ListBox1.DataSource = ds;
ListBox1.DataBind();
}
问题是我没有将任何数据存入我的ListBox,它仍然是空的,没有错误。试图找到我的推杆断点,但找不到原因。
我有一个类似的方法,它使用不同参数的不同程序来绑定我的网页中的另一个下拉列表,并且工作正常。所以,这里有些不对劲。有什么建议吗?
答案 0 :(得分:0)
您可以使用SQL事件探查器来查看过程调用,以查看您实际使用的参数,然后尝试直接在SSMS中运行它。同样在分配参数后中断。
但是我敢打赌它是所选的项目参数 - 如果没有填充,你可能想要查看其他“选定”属性之一(例如SelectedValue)。
答案 1 :(得分:0)
您可以将其更改为下方并尝试吗?
private void ListBind(string queryPart)
{
SqlDataAdapter adp = new SqlDataAdapter("Retrieve", ConfigurationManager.ConnectionStrings["cn"].ConnectionString);
DataTable dt = new DataTable();
adp.SelectCommand.CommandType = CommandType.StoredProcedure;
adp.SelectCommand.Parameters.AddWithValue("s1",queryPart);
adp.SelectCommand.Parameters.AddWithValue("s2",DropDownList1.SelectedItem.ToString());
adp.Fill(dt);
ListBox1.DataSource = dt ;
ListBox1.DataBind();
}
答案 2 :(得分:0)
我不确定DataSet是否可以作为DataSource提供给控件。您可以通过将代码更改为此类
来重试 ListBox1.DataSource = ds.Tables[0];
ListBox1.DataBind();