DropDownList не заполнен из базы данных SQL

1

Я чего-то не хватает. Я пытаюсь заполнить выпадающий список из таблицы в базе данных SQL. У меня есть несколько столбцов в таблице, но только 2, 1 для значения и 1 для текста на основе значения, введенного из текстового поля. Моя тестовая страница Я просто дал переменной session значение из моей таблицы. Я тестирую свое SQL-соединение и изменяет его. Я протестировал мой оператор select в SQL и изменил его, что получил только те данные, которые мне нужны.

Может кто-нибудь, пожалуйста, скажите мне, что я делаю неправильно.

выпадающий список - это простой asp DDL:

<asp.DropDownList ID="DD1" runat="server"></asp.DropDownList>

Код позади:

protected void Page_Load(object sender, EventArgs e)
{
   string a = Session["Test"] as string;
   string IDSel = "SELECT Value, Text FROM DDL1 WHERE Value = '@Value'";
   SqlConnection IDcon = new SqlConnection(connection string);
   IDcon.Open();
   SqlDataAdapter adapter = new SqlDataAdapter(IDSel, IDcon);
   adapter.SelectCommand.Parameters.AddWithValue("@Value", a);
   DataSet IDds = new DataSet();
   adapter.Fill(IDds);
   try
   {
      DD1.DataSource = IDds;
      DD1.DataTextField = "Text";
      DD1.DataValueField = "Value";
      DD1.DataBind();
   }
   catch
   {
      Response.Write("No data found");
   }
   IDcon.Close();
}

На моей главной странице есть:

    Session["Test"] = //a value from my table

я добавил

Response.Write(a);

в разных точках, и я получаю значение таблицы, которое я ожидал, и я никогда не получал никаких данных. 1 пример, я нашел, добавил ли я

DD1.BindData();

сразу после строки DD1.DataSource но это вызвало сообщения об ошибках о моем значении параметра. Я выполнил отладку, и он работает чистым.

Теги:
webforms

3 ответа

1
Лучший ответ

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

string IDSel = "SELECT Value, [Text] FROM DDL1 WHERE Value = @Value";

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

  • 0
    Спасибо. Это решило мою проблему.
  • 0
    Рад помочь. Если мой ответ правильный и решил вашу проблему, я предлагаю прочитать этот пост META, в котором объясняется правильное поведение в этих случаях.
2

попробуй это

DD1.DataSource = IDds.Tables[0];
  • 0
    Спасибо за помощь, но не решил проблему. См. Ответ Стива ниже.
1

его правильный способ добавить sql-параметры

 adapter.SelectCommand.Parameters.AddWithValue("Value", a);

а также

string IDSel = "SELECT Value, Text FROM DDL1 WHERE Value = @Value";

Ещё вопросы

Сообщество Overcoder
Наверх
Меню