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是一个表示天数的数字!

如何使该列可排序而不出现异常?

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) 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