Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Datagridview[是否为有效的排序字符串项]?_C#_.net_Datagridview - Fatal编程技术网

C# Datagridview[是否为有效的排序字符串项]?

C# Datagridview[是否为有效的排序字符串项]?,c#,.net,datagridview,C#,.net,Datagridview,我有一个包含datagridview的表单,我正在将这个datagridview绑定到DB,我正在使用一个函数绑定(字符串sqlQuery),当我调用这一行时,datagridview中充满了数据: Bind("SELECT title,description,(CASE WHEN DATEDIFF(deadline,CURDATE()) > 0 THEN CONCAT('Dans ',DATEDIFF(deadline,CURDATE()), ' Jours') WHEN DATEDIF

我有一个包含datagridview的表单,我正在将这个datagridview绑定到DB,我正在使用一个函数绑定(字符串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中正确填写数据:

问题:当我单击每个列标题时,数据被排序(升序或降序),除了单击列标题
截止日期
时,应用程序停止工作,我得到一个异常,显示如下:

[(DATEDIFF(截止日期)不是有效的排序字符串项时的情况

当我点击该列时,如何使其可排序,或者至少如何避免引发此异常

“截止日期”列中可以包含的不同值如下:

Dans X Jours

expireédepuis X Jours

Demain

其中
Dans X Jours
Demain
expireédepuis X Jours

X是表示天数的数字

如何使此列在没有异常的情况下可排序?

尝试使用以下方法(我不是为了方便复制/粘贴而格式化):

在SQL查询中,您必须为
deadline
列指定列名(下面是格式化的查询):

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