2009-11-14 77 views
0

我最近在GridView控件上发现了BoundColumns的方便的小NullDisplayText属性。这对于处理记录集中的NULL值非常有用 - 例如,当我的用户名字段为NULL时,我可以显示占位符“System”。ASP.Net Gridview - 如何让SortExpression使用NullDisplayText值

但是,对于SortExpression,我只能指定列的名称,据我所知。所以当我按该列进行排序时,它仍然使用NULL作为排序值而不是我的自定义值排序,导致这些项目首先出现在列表中。所以我的结果是这样的,当我排序:

System 
System 
Adams 
Simpson 

任何想法,我怎么可以自定义的SortExpression行为使用个性化的NullDisplayText值,而不是默认的NULL?这是我只需要在我的SQL中处理?

谢谢!

回答

1

我认为它打破了各种各样的规则,因为它把SQL在表示层,但我必须承认,我已经在排序表达式中使用一个case语句之前:

SortExpression="CASE WHEN ContactLoginID IS NULL THEN 0 ELSE 1 END" 

你可以尝试

SortExpression="ISNULL(Name, 'System')" 

但也许你应该真的在从数据访问层调用的SQL中执行,就像你在你的问题中提出的那样。

0

您可以检查GridView行边界事件中的行的值,并将其设置为“System”。将排序表达式设置为列名称。

不是专家,但这是有点解决方法。不知道如何自定义排序表达式。