WEB开发网
开发学院图形图像Flash Silverlight学习笔记二:DataGrid 服务器端分页、... 阅读

Silverlight学习笔记二:DataGrid 服务器端分页、排序的实现

 2008-12-26 11:54:08 来源:WEB开发网   
核心提示: 好,到此,Silverlight学习笔记二:DataGrid 服务器端分页、排序的实现(4),整个分页、排序的功能就基本上完成了,呵呵,其它到也没有什么大问题,我会在后面的学习中,仔细用一下程序发现,我们在实现了排序之后

好,到此,整个分页、排序的功能就基本上完成了。

呵呵,仔细用一下程序发现,我们在实现了排序之后,DataGrid 然而会自作聪明的帮我们的数据又排了一下,并且,DataGrid默认是支持列拖动的,当我们拖动列时,会触发排序,导致结果和用户预计的不一样。那怎么解决呢,

直接在DataGrid中设置 CanUserSortColumns="False"和CanUserReorderColumns="False"。就可以解决了。  

再在测试一下,发现在排序之后,ColumnHeader上面并没有显示标示排序方向的小箭头,查了一下,MSDN上面在介绍 DataGrid 样式和模板的时候,提到过DataGridColumnHeader 状态里面有SortAscending和SortDescending这两种状态,ok,我们就接着写了个方法,来设置Header的状态。在上面MouseLeftButtonDown中我们曾经把排序的Header保存了下来,就是为了在这里使用的。代码如下:

1  privatevoidsetColumnSortState()
2  {
3   if(dir=="asc")
4     VisualStateManager.GoToState(sortHeader, "SortAscending",false);
5   else
6     VisualStateManager.GoToState(sortHeader, "SortDescending",false);
7  }

很简单,但是有个奇怪的问题,就是在排序之后,设置了Header的状态并不能保存下来,鼠标移动,那个小箭头就会消失,具体原因我也不明白,我不太清楚VisualStateManager.GoToState在设置了Header状态是不是和DataGrid自带的排序功能有关联,才导致了排序的小箭头会自动消失,或者在这里根本就不应该用这个方法。暂时我没有去考虑这个问题,为了让排序小箭头能正确显示,我只好在Grid的MouseMove和LayoutUpdated事件里都调用了setColumnSortState(),用来保证小箭头可以正确显示。

至此,整个分页、排序的功能全部完成。除了那个小箭头显示的处理不完美之外,其它到也没有什么大问题。我会在后面的学习中,来解决这个问题。

上一页  1 2 3 4 

Tags:Silverlight 学习 笔记

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接