2017-07-28 65 views
0

我确定这很容易,但是我画了一个空白。我有5个文本框用于搜索。如果填充TextBox1然后填充GridView1,GridBox2 for GridView2等。然后我有4个更多的GridViews可以填充,如果只是TextBox1或只是TextBox2填充,但也填充,如果两者都填充。另一个GridView将基于1或3个正在填充的文本框来填充。基于填入的1个或多个字段的查询

是否有其他方法,而不是开关或500如果场景编写基于填充1到3搜索字段填充GridView?

+0

你应该更具体一点,并显示的SQL代码和/或ASP一个例子.net代码。 – Nino

+0

@Nino好吧,让我们看看一个GridView。 5个搜索框:CompanyID,CustomerNumber,LocationID,MarketerNumber和MeterNumber。如果CustomerNumber是唯一填充的框,或LocationID或MarketerNumber,则可以填充此GridView。如果客户编号和位置ID或客户编号和市场营销商编号或位置标识和营销商编号也可以填充它。简而言之,取决于填充的搜索/过滤器的数量,7个不同的数据集。 – toadfromgrove

回答

0

在这种情况下,我通常会定义一个具有多个输入参数的特定搜索查询,它会检查每个参数是否有值。

例如

-- This part only if you use ODBC connection, it you use SQL Client connection you don't need it 
declare @CompanyID int 
declare @CustomerNumber int 
declare @LocationID int 
declare @AnotherFilter varchar(100) 

SELECT @CompanyID=?, @CustomerNumber=?, @LocationID=?, @AnotherFilter=? 

-- End ODBC specific 

SELECT * 
FROM Your_table 
WHERE 
([email protected] OR @CompanyID=0) 
AND 
([email protected] OR @CustomerNumber=0) 
AND 
([email protected] OR @LocationID=0) 
AND 
([email protected] OR @AnotherFilter='') 

你可以把这个在你的SqlDataSource或ObjectDataSource控件为GridView(S)

+0

这是假设他们填写每个文本框。假设他们不填写LocationTextBox,那么WHERE子句的AND将不会返回任何内容。 – toadfromgrove

+0

您将GridView与ObjectDataSource链接起来,在此引用一种方法,您可以在其中测试参数并将默认值传递给tue查询 –