Я пытаюсь создать отфильтрованный список на основе ввода пользователя и отсутствия ввода.
Я могу фильтровать, если пользователь ввел полное имя или только первый символ имени, у меня есть 3 различных текстовых поля (имя, фамилия, страна), которые используются для фильтра. В SQL Server я создал код для этого и для фильтрации, даже если они не вводят значение в одно или все текстовые поля. Поэтому я считаю, что хранимая процедура SQL в порядке.
Я считаю, что моя проблема в том, что я пытаюсь получить эту информацию от пользователя в Visual Studio через текстовые поля и с помощью параметров SQL для отправки информации в хранимую процедуру. Я заметил, что не могу получить пустую строку в параметре SQL. Есть ли в любом случае передать пустую строку в параметр SQL?
Вот биты кода ...
Соответствующие биты из хранимой процедуры:
@Namenvarchar(100) = ' ',
@Surname nvarchar(100) = ' ',
@Country nvarchar(100) = ' '
AND IsNull(Input.Name, '') LIKE '%' + @Name+ '%'
AND IsNull(Input.Surname, '') LIKE '%' + @Surname + '%'
AND IsNull(Input.Country, '') LIKE '%' + @Country + '%'
А вот код, относящийся к стороне Visual Studio:
SqlCommand cmd = new SqlCommand("FilterBasedOnInput", con);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter Name = new SqlParameter("@Name", TBName.Text);
SqlParameter Surname= new SqlParameter("@Surname", TBSurname.Text);
SqlParameter Country= new SqlParameter("@Country", TBCountry.Text);
cmd.Parameters.Add(Name);
cmd.Parameters.Add(Surname);
cmd.Parameters.Add(Country);
con.Open();
Так скажем, в БД у меня есть ...
Names ("Tom", "Jones", "Nick")
Surname ("To", "Jo", "Ni")
Country ("England", "USA", "France")
Если пользователь вводит в поле «O» в поле «Имя» имя, то и Том, и Джонс придумали бы свои 3 столбца, но если бы они также вводили текстовое поле «Фамилия» с «Кому», тогда только Том появлялся бы с его 3 колонки.
У меня есть это работает на SQL Server, но не в Visual Studio ASPX.