Данные не поступают в ListBox после запроса - PullRequest
0 голосов
/ 29 февраля 2012

У меня есть ListBox на веб-странице .aspx, на котором я пытаюсь получить данные из БД. Запрос выполнен в форме хранимой процедуры, и ниже приводится метод 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 голосов
/ 29 февраля 2012

Можете ли вы изменить его на ниже и попробовать?

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();
}
0 голосов
/ 29 февраля 2012

Я не уверен, может ли набор данных быть передан в качестве источника данных для элемента управления.Можете ли вы попробовать еще раз, изменив код на что-то вроде этого

 ListBox1.DataSource = ds.Tables[0];
 ListBox1.DataBind();
0 голосов
/ 29 февраля 2012

Вы можете использовать SQL Profiler для просмотра вызова процедуры, чтобы увидеть, какие параметры вы на самом деле используете, а затем попробовать запустить его непосредственно в SSMS.Точно так же просто перерыв после назначения параметров.

Но я бы поспорил, что это параметр выбранного элемента - вы можете посмотреть на одно из других «выбранных» свойств (например, SelectedValue), если он не заполнен.

...