Следующий SQL-запрос прекрасно работает в SQL Management Studio:
DECLARE @phone AS varchar(25)
SET @phone = NULL
DECLARE @firstname AS varchar(25)
SET @firstname = NULL
DECLARE @lastname AS varchar(25)
SET @lastname = NULL
DECLARE @email AS varchar(300)
SET @email = NULL
SELECT id, lead_code, first_name + ' ' + last_name AS [name], lead_status, lead_source, date_entered, city, state, zip, gender, home_phone, call_back
FROM leads
WHERE (home_phone = @phone OR @phone IS NULL) AND
(first_name = @firstname OR @firstname IS NULL) AND
(last_name = @lastname OR @lastname IS NULL) AND
(email = @email OR @email IS NULL)
ORDER BY date_entered DESC
Вот вершина sproc:
ALTER PROCEDURE dbo.custom_LeadsGetAllLeadsSimpleSearchParams
(
@phone varchar(25) = null,
@firstname varchar(25) = null,
@lastname varchar(25) = null,
@email varchar(300) = null
)
AS
SELECT id.....
Выполнение этого способа дает мне все 2100 строк в моей БД, когда я изменяю одну из команд SET для поиска имени или адреса электронной почты, он возвращает ТОЛЬКО те строки, я думаю, что мой SQL (хотя, возможно, не удивительный ) работает.
Проблема в .NET.
Из кода за страницей я делаю это:
sd.SelectCommandType = SqlDataSourceCommandType.StoredProcedure;
sd.SelectCommand = "custom_LeadsGetAllLeadsSimpleSearchParams";
sd.SelectParameters.Add("@phone", strPhone);
sd.SelectParameters.Add("@firstname", strFirstName);
sd.SelectParameters.Add("@lastname", strLastName);
sd.SelectParameters.Add("@email", strEmail);
gvLeads.DataBind();
строковые переменные передаются как ноль, когда ноль. Когда я наблюдаю коллекцию sd.SelectParameters в отладчике, я вижу значение параметра как ноль, когда и где это необходимо. Проблема в том, что когда происходит привязка данных, сетка отображается без данных. Я просто получаю gridview без строк текста, который я установил. Идеи?