我在 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 關注
- 186 瀏覽
添加回答
舉報
0/150
提交
取消
