Sql server вложенный, если еще проблема..
Я пытаюсь отфильтровать gridview на основе элементов, выбранных в выпадающем списке .
у меня есть некоторые ошибки в cs, например, добавление параметров в процедуру и в моем sql-сервере у меня есть некоторые проблемы с запросом. его возвращение больше строк. он добавляет все строки и которые когда-либо выбираются в выпадающем списке, я думаю, что мой запрос неверен.. например, всего у меня 109 записей. и если я выберу назначено в выпадающем списке есть как 24. так что всего 24 и 109 добавляются и 133 возвращается.
пожалуйста, помогите мне с запросом ??
и проблема при добавлении параметров в cmd.
Что я уже пробовал:
Моя процедура..
alter procedure Sp_SelectedStatus 'Assigned' @Status varchar(20) as Begin IF (@Status = 'Active') BEGIN SELECT A.GroupName, B.Brand, B.Model, B.SerialNo, B.Status, B.AddedOn FROM GroupDetails AS A INNER JOIN DeviceDetails AS B ON A.GroupId = B.GroupId WHERE Status = 'Active' END IF (@Status = 'Assigned') BEGIN SELECT A.GroupName, B.Brand, B.Model, B.SerialNo, B.Status, B.AddedOn FROM GroupDetails AS A INNER JOIN DeviceDetails AS B ON A.GroupId = B.GroupId WHERE Status = 'Assigned' END IF (@Status = 'Returned') BEGIN SELECT A.GroupName, B.Brand, B.Model, B.SerialNo, B.Status, B.AddedOn FROM GroupDetails AS A INNER JOIN DeviceDetails AS B ON A.GroupId = B.GroupId WHERE Status = 'Returned' END if (@Status = 'De-activated') Begin Select A.GroupName, B.Brand , B.Model , B.SerialNo , B.Status , B.AddedOn from GroupDetails as A inner join DeviceDetails as B on A.GroupId = B.GroupId where Status = 'De-activated' End if(@Status = 'Sent for repair') Begin Select A.GroupName , B.Brand , B.Model , B.SerialNo , B.Status , B.AddedOn from GroupDetails as A inner join DeviceDetails as B on A.GroupId = B.GroupId where Status = 'Sent for repair' End else Begin Select A.GroupName , B.Brand , B.Model , B.SerialNo , B.Status , B.AddedOn from GroupDetails as A inner join DeviceDetails as B on A.GroupId = B.GroupId End End
мое событие изменения индекса
protected void ddlState_SelectedIndexChanged(object sender, EventArgs e) { SqlConnection con = new SqlConnection(cs); SqlCommand cmd = new SqlCommand("Sp_SelectedStatus", con); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Add("@Status", SqlDbType.NVarChar).Value = "Status"; SqlDataAdapter da = new SqlDataAdapter(cmd); DataSet ds = new DataSet(); try { con.Open(); da.Fill(ds); grdDeviceDetails.DataSource = ds; grdDeviceDetails.DataBind(); con.Close(); } catch (Exception ex) { Response.Write(ex.Message); } }
ZurdoDev
Вы же не хотите писать свой sql таким образом.
Вместо этого что-то вроде
ВЫБИРАТЬ *
Из табл. 1 Т1
Внутреннее соединение table2 t2 на t1. GroupID = t2.GroupID
Где T1.Статус = @статус или @статус = "
Тогда у вас есть одно-единственное утверждение.