为了账号安全,请及时绑定邮箱和手机立即绑定

使用 sql 的 Gridview 搜索/过滤

使用 sql 的 Gridview 搜索/过滤

C#
catspeake 2022-12-24 10:38:07
我在 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 过滤器,另一个包含两者。
查看完整描述

2 回答

?
慕森王

TA贡献1777条经验 获得超3个赞

您需要检查您的查询参数是否为空或其长度是否为 0 或者它是否包含某个值然后过滤Like


SELECT * FROM [MaterialView] 

WHERE 

((

 @MaterialName IS NULL 

 OR LEN(@MaterialName) = 0 

 OR ([MaterialName] LIKE '%' + @MaterialName + '%')

)

AND ([SupplierID] = @SupplierID));


查看完整回答
反对 回复 2022-12-24
?
守候你守候我

TA贡献1802条经验 获得超10个赞

当我设置文本框默认文本= 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


查看完整回答
反对 回复 2022-12-24
  • 2 回答
  • 0 关注
  • 137 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信