2013-05-07 3 views
0

У меня есть C# строки кода, как,падения Список вниз не получают заселена

using (SqlDataSource sqlds = new SqlDataSource(ConnectionString(), SelectCommand())) 
      { 
       drop1.DataSource = sqlds; 
       drop1.DataTextField = "UserName"; 
       drop1.DataBind(); 
      } 

теперь это не заселять мой DropDownList,

<asp:DropDownList id="drop1" runat="server" /> 

, поэтому я хочу, чтобы проверить, если SQL возвращает данные или нет

Если я положил разрыв строки, я не уверен, как узнать, если sql возвращает данные, я использую использование оператора select и строки подключения для gridview, и он работает, но не с выпадающим списком

ответ

2

Убедитесь, что у вас есть SQLQuery в выберите команду, то вам необходимо преобразовать вы SqlDataSource выберите команду в DataView ,

string query = "select yourfield from yourtable"; 

using (SqlDataSource sqlds = new SqlDataSource(conn.ConnectionString, query)) 
{ 
    System.Data.DataView dv = (System.Data.DataView)sqlds.Select(DataSourceSelectArguments.Empty); 
     if (dv.Count > 0) 
     { 
      DropDownList1.DataSource = sqlds; 
      DropDownList1.DataTextField = "yourfield"; 
      DropDownList1.DataBind(); 
     } 
    } 
+0

+1, спасибо sir, dv.count говорит мне 5, и есть 5 записей в таблице тоже – Mathematics

+0

однако он не заполнил выпадающий список – Mathematics

+0

Я не уверен, что вы подразумеваете под этим sir – Mathematics

1

Вы должны уметь поставить точку останова на drop1.DataSource = sqlds;, а затем наведите указатель мыши на sqlds, и он должен показать вам, сколько строк содержится в DataSource.

+0

спасибо, сэр, но я не мог найти ни одной строки, свойство для источника данных – Mathematics

+0

Там нет 'rows' собственности, но Visual Studio услужливо должен показать вам' Count = x'. Если этого не произойдет, может возникнуть проблема с вашим запросом. Если у вас есть SQL Server Profiler, то это то, что я буду использовать, чтобы получить точный запрос, который отправляется на SQL Server. –

+0

см. Мой ответ –

1

Ваш способ привязки источника данных к выпадающему является правильным, и то же самое работает для меня.

Возможные ошибки могут быть

  • в connectionString. Проверьте правильность.
  • в запросе выбора. Убедитесь, что методы SelectCommand() вернули правильный SQL-запрос.

использование Selected событие SqlDataSource для проверки вернулся ли он какой-либо строки т.е.

sqlds.Selected += new SqlDataSourceStatusEventHandler(sdl_Selected); 

где sql_Selected является:

void sdl_Selected(object sender, SqlDataSourceStatusEventArgs e) 
    { 
     var a = e.AffectedRows; 
    } 

как примечание стороны - убедитесь, что ваш запрос на выборку Безразлично» t содержит любую конкатенацию строк, подверженную SQL-инъекции. т.е. SELECT UserName from [TableName] where certainCol ="+ variable.

Не делайте этого

предоставить параметр SQL вместо этого, и добавить к вашему SelectParametersSqlDataSource

+0

нет ничего плохого в select statement ни со строкой соединения sir – Mathematics

+0

, то ваш запрос просто не возвращал ни одной строки –

+0

Как я четко сказал, сэр, запрос возвращает строки, спасибо – Mathematics

Смежные вопросы