Я чего-то не хватает. Я пытаюсь заполнить выпадающий список из таблицы в базе данных 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
но это вызвало сообщения об ошибках о моем значении параметра. Я выполнил отладку, и он работает чистым.
Если вы поместите свой заполнитель между одинарными кавычками, он будет рассматриваться как строковый литерал, а не как параметр
string IDSel = "SELECT Value, [Text] FROM DDL1 WHERE Value = @Value";
Кроме того, чтобы избежать возможной путаницы с зарезервированным ключевым словом, я думаю, вам нужно поставить слово TEXT между квадратными скобками
попробуй это
DD1.DataSource = IDds.Tables[0];
его правильный способ добавить sql-параметры
adapter.SelectCommand.Parameters.AddWithValue("Value", a);
а также
string IDSel = "SELECT Value, Text FROM DDL1 WHERE Value = @Value";