查询后数据不会到达ListBox

时间:2012-02-29 05:41:56

标签: c# asp.net sql-server-2000

我在.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,它仍然是空的,没有错误。试图找到我的推杆断点,但找不到原因。

我有一个类似的方法,它使用不同参数的不同程序来绑定我的网页中的另一个下拉列表,并且工作正常。所以,这里有些不对劲。有什么建议吗?

3 个答案:

答案 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();