2013-03-08 6 views
7

Когда я пытаюсь настроить данные dropdownlist, получил следующее: system.data.datarowview
что я не так?Databind a dropdownlist

string strQuery = "Select Item FROM Calendar Where UserD="Test"; 
SqlConnection myConn; 
SqlDataAdapter sqlDa = new SqlDataAdapter(strQuery,myConn); 
DataTable sqlTa = new DataTable("Test"); 
da.Fill(sqlTa); 
ddlList.DataSource = sqlTa; 
ddlList.DataBind(); 
+0

Где вы сшиваться выпадающий список? Это в page_load? –

ответ

14
string strQuery = "Select Item FROM Calendar Where UserD='Test'"; 

Примечание Вы должны использовать отдельные цитаты вокруг строки, как показано в коде вы не договорил щёток строки когда-либо, так что остальная часть кода просто стала частью strQuery.

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

ddlList.DataSource = sqlTa; 
ddlList.DataValueField = "ValueFieldFromDatabaseResults"; 
ddlList.DataTextField = "ShownTextFieldFromDatabaseResults"; 
ddlList.DataBind(); 
2

Необходимо указать, какие поля использовать как значение и текст.

ddlList.DataSource = sqlTa; 
ddlList.DataValueField = "ValueField"; 
ddlList.DataTextField = "TextField"; 
ddlList.DataBind(); 

И ваше оператор выбора не хватает»Надо:.

"Select Item FROM Calendar Where UserD='Test'" 

примером является:

Как Райан указали, если вы отходили одно поле, то вы можете просто делать:

 DataTable dtTable = new DataTable(); 

     try 
     { 
      using (SqlConnection sqlConnection = new SqlConnection("Your connection")) 
      { 
       using (SqlCommand sqlCommand = new SqlCommand("Select Item FROM Calendar Where UserD='Test'", sqlConnection)) 
       { 
        sqlConnection.Open(); 

        using (SqlDataReader sqlDataReader = sqlCommand.ExecuteReader()) 
        { 
         dtTable.Load(sqlDataReader); 
         sqlDataReader.Close(); 
        } 
       } 
      } 
     } 
     catch (Exception error) 
     { 
      throw error; 
     } 

     ddlList.DataSource = dtTable; 
     ddlList.DataBind(); 

Но если у вас есть более чем одно поле, то вы можете сделать это:

 DataTable dtTable = new DataTable(); 

     try 
     { 
      using (SqlConnection sqlConnection = new SqlConnection("Your connection")) 
      { 
       using (SqlCommand sqlCommand = new SqlCommand("Select Item, id FROM Calendar Where UserD='Test'", sqlConnection)) 
       { 
        sqlConnection.Open(); 

        using (SqlDataReader sqlDataReader = sqlCommand.ExecuteReader()) 
        { 
         dtTable.Load(sqlDataReader); 
         sqlDataReader.Close(); 
        } 
       } 
      } 
     } 
     catch (Exception error) 
     { 
      throw error; 
     } 

     ddlList.DataSource = dtTable; 
     ddlList.DataValueField = "id"; 
     ddlList.DataTextField = "item"; 
     ddlList.DataBind(); 
+0

Можете ли вы привести мне пример? –

+0

@Stephen, поскольку он возвращает только одно поле из базы данных, вам не нужно указывать значение или текстовое поле. –

+0

Повысьте свои обновления! –

0

Попробуйте это ..

ddlList.DataSource = sqlTa;     
ddlList.DataTextField = "class"; 
ddlList.DataBind(); 

добавление ddList.Value="somefield" является необязательным

0

добавить эту строку путь

ddlList.DataSource = sqlTa; 
ddlList.DataValueField = "ValueFieldFromDatabaseResults"; 
ddlList.DataTextField = "ShownTextFieldFromDatabaseResults"; 
ddlList.DataBind(); 

то и пропустить строку подключения для

SqlConnection myConn="must add your connection string code here " 

Вы не открытое соединение строки так

добавить myconn.open()

для

SqlConnection myConn="must add your connection string code here " 
`myconn.open()` 
SqlDataAdapter sqlDa = new SqlDataAdapter(strQuery,myConn) 
Смежные вопросы