C# 通过传递多个参数,根据过程在GridView中显示数据

C# 通过传递多个参数,根据过程在GridView中显示数据,c#,asp.net,sql-server-2008,C#,Asp.net,Sql Server 2008,我有一个存储过程,希望在DataGridView中获得结果 如下所示,我有5个参数,每次只想使用其中一个。其余的可以是空值 例如:“我想通过5种不同的方式进行过滤,但每次我只使用一个参数,如ID,对于第二种情况,我将通过日期等进行过滤…” 我将通过表单中的文本框传递数据 我想要C代码或直接从GridView到SqlDataSource的方法: ALTER Procedure [dbo].[ValidatiorSelection] ( @ID int ,@Cisco

我有一个存储过程,希望在
DataGridView
中获得结果

如下所示,我有5个参数,每次只想使用其中一个。其余的可以是空值

例如:“我想通过5种不同的方式进行过滤,但每次我只使用一个参数,如ID,对于第二种情况,我将通过日期等进行过滤…”

我将通过表单中的文本框传递数据

我想要C代码或直接从
GridView
SqlDataSource
的方法:

ALTER Procedure [dbo].[ValidatiorSelection]
(
        @ID int
        ,@Cisco int
        ,@Date date
        ,@Resoution varchar(60)
        ,@Type varchar(30) 
)
AS
BEGIN
    SET NOCOUNT ON;

    SELECT 
           [Justification_ID]
          ,[Justification_Cisco]
          ,[HC_AgentName]
          ,[HC_Q]
          ,[HC_Cisco]
          ,[HC_Site]
          ,[HC_SPV]
          ,[HC_TeamLeader]
          ,[Justification_Date_Of_Case]
          ,[Justification_AgentShift]
          ,[Justification_From]
          ,[Justification_To]
          ,[Justification_OT_Duration]
          ,[Justification_Justification]
          ,[Justification_Description]
          ,[Justification_Creator]
          ,[Justification_Approved_By]
          ,[Justification_Type]
          ,[Justification_Group_ID]
          ,[WFM_Specialeist]
          ,[WFM_Resolution]
          ,[WFM_Status]
          ,[WFM_Comment]
          ,CASE WHEN DateDiff("d",[Justification_Date_Of_Case],[Justification_DT])>2 then 'Exceeded 48 Hours' 
           else 'During 48 Hours'
           end as 'Time Status'
          ,[Justification_DT] as 'Open Time'
          ,[WFM_DT] as 'Close Time'
    FROM 
        [ZainJTA].[dbo].[TBL_WFM] 
    RIGHT JOIN 
        ([ZainJTA].[dbo].[TBL_Justification] 
    LEFT JOIN 
        [ZainJTA].[dbo].[TBL_HC] ON [TBL_Justification].[Justification_Cisco] = [TBL_HC].[HC_Cisco]) ON [TBL_WFM].[WFM_JustificationID] = [TBL_Justification].[Justification_ID]
    WHERE
        [TBL_Justification].Justification_ID = @ID  
        OR [TBL_Justification].Justification_Cisco = @Cisco 
        OR [TBL_Justification].Justification_Date_Of_Case = @Date
        OR [TBL_Justification].Justification_Type = @Type
        OR [TBL_WFM].[WFM_Resolution] = @Resoution     
    ORDER BY 
        [Justification_ID] DESC
END
这应该行得通

 <asp:SqlDataSource id="SqlDataSource1"
 runat="server"
 ConnectionString="<%$ ConnectionStrings:MyNorthwind%>"
    SelectCommandType="StoredProcedure"                
    SelectCommand="sp_lastnames">
     <SelectParameters>
            <asp:ControlParameter Name="Name" Type="String" ControlID="txtName" />
            </SelectParameters>
    </asp:SqlDataSource>


我应该在哪里编写此代码?我应该在哪里传递参数参数名称应该是ControlParameter的名称,ControlID是您想要从中获取值的文本框我尝试过但没有解决我的问题,我想通过null VALUEST DefaultValue属性为参数传递一个参数并设置另一个参数,这样当您不在TXTBOX中输入任何内容时,默认值将传递到存储过程。我尝试将其设置为“null”它不起作用,如果我用其他值设置它,它将获得错误的数据