我在 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));
守候你守候我
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
- 2 回答
- 0 关注
- 137 浏览
添加回答
举报
0/150
提交
取消