使用 sql 的 Gridview 搜索/过滤

我在 c# webform 中得到了一个 gridview,它包含来自 SQL Server 数据库的数据库,通过 sqlDataSource。SqlDataSource 包含一个 SQL 字符串

SELECT * FROM [MaterialView] WHERE (([MaterialName] LIKE '%' + @MaterialName + '%') AND ([SupplierID] = @SupplierID))

SQL 字符串按 SupplierID 和 MaterialName 过滤数据两次。

首先,用户在上一页确定 SupplierID(@SupplierID 参数),当加载 gridview 页面时,它执行([SupplierID] = @SupplierID))。

然后,我得到一个“搜索框”+“按钮”,通过在“搜索框”(@MaterialName 参数)中输入文本,用户可以再次过滤 gridview,执行 ([MaterialName] LIKE '%' + @MaterialName + '%')。

我的问题是,当加载 gridview 页面时,由于“搜索框”最初是空的(没有 @MaterialName 参数),gridview 返回 0 条记录()。

我修复它的方法是创建 2 个相似的 Gridview,一个只包含 supplierID 过滤器,另一个包含两者。


catspeake
浏览 175回答 2
2回答

慕森王

您需要检查您的查询参数是否为空或其长度是否为 0 或者它是否包含某个值然后过滤LikeSELECT * FROM [MaterialView] WHERE (( @MaterialName IS NULL  OR LEN(@MaterialName) = 0  OR ([MaterialName] LIKE '%' + @MaterialName + '%'))AND ([SupplierID] = @SupplierID));

守候你守候我

当我设置文本框默认文本= 0(@MaterialName 参数源)并将@er-sho SQL 修改为SELECT * FROM [MaterialView] WHERE (( @MaterialName = 0  OR ([MaterialName] LIKE '%' + @MaterialName + '%') ) AND ([SupplierID] = @SupplierID));所以我想问题是 textbox.text 默认值(如果未设置)既不是 NULL 也不是 LEN 0。我知道这是一个草率的解决方案,但我很满意,再次感谢@er-sho
打开App,查看更多内容
随时随地看视频慕课网APP