Datagridview[不是有效的排序字符串条目]
本文关键字:字符串 排序 有效 Datagridview | 更新日期: 2023-09-27 18:00:18
我有一个包含datagridview的表单,我将这个datagridview绑定到DB,我使用函数Bind(字符串sqlQuery),当我调用此行时,datagridview中会填充数据:
Bind("SELECT title,description,(CASE WHEN DATEDIFF(deadline,CURDATE()) > 0 THEN CONCAT('Dans ',DATEDIFF(deadline,CURDATE()), ' Jours') WHEN DATEDIFF(deadline,CURDATE()) = 0 THEN CONCAT('Demain') ELSE CONCAT('Expiré depuis ', DATEDIFF(deadline,CURDATE()) * -1, ' Jours') END),progress FROM taches WHERE 1");
数据正确填写在dataGridView:中
问题:当我单击每个列标题时,除了单击列标题deadline
外,数据都会进行排序(按升序或降序),应用程序停止工作,我会得到一个异常,显示如下:
[(CASE WHEN DATEDIFF(deadline isn't a valid Sort string entry
当我点击该列时,如何使其可排序,或者至少如何避免引发此异常!
"截止日期"列中可以包含的不同值如下:
Dans X Jours
Expiré depuis X Jours
Demain
其中Dans X Jours
>Demain
>Expiré depuis X Jours
X是一个表示天数的数字!
如何使该列可排序而不出现异常?
尝试使用以下内容(我不是为了方便复制/粘贴而格式化):
Bind("SELECT title,description,(CASE WHEN DATEDIFF(deadline,CURDATE()) > 0 THEN CONCAT('Dans ',DATEDIFF(deadline,CURDATE()), ' Jours') WHEN DATEDIFF(deadline,CURDATE()) = 0 THEN CONCAT('Demain') ELSE CONCAT('Expiré depuis ', DATEDIFF(deadline,CURDATE()) * -1, ' Jours') END) as deadline,progress FROM taches WHERE 1");
在SQL查询中,您必须为deadline
列指定列名(下面是格式化的查询):
SELECT
title,
description,
(CASE
WHEN DATEDIFF(deadline,CURDATE()) > 0
THEN CONCAT('Dans ',DATEDIFF(deadline,CURDATE()), ' Jours')
WHEN DATEDIFF(deadline,CURDATE()) = 0
THEN CONCAT('Demain')
ELSE CONCAT('Expiré depuis ', DATEDIFF(deadline,CURDATE()) * -1, ' Jours')
END) as deadline,
progress
FROM
taches
WHERE 1