0

我有一个包含 datagridview 的表单,我将此 dataGridView 绑定到 DB,我正在使用函数 Bind(string 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 中:

问题:当我单击每个 columnHeader 时,数据被排序(按升序或降序),除非我单击列标题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 是代表天数的数字!

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

4

1 回答 1

2

尝试使用以下内容(为了方便复制/粘贴,我没有进行格式化):

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
于 2013-02-19T14:42:01.840 回答