Silverlight学习笔记三:如何自定义DataGrid的Header
2008-12-30 11:53:52 来源:WEB开发网在获取数据之后,对DataGrid的Header进行了处理。新增了CreateHeader()这个方法。
1 privatevoidclient_GetProductsPagingCompleted(objectsender,GetProductsPagingCompletedEventArgse)
2 {
3 if(e.Error==null)
4 {
5 products_list=e.Result.ToList();
6 dgData.ItemsSource=products_list;
7 if(pager==null)
8 {
9 pager=newPager(e.TotalPage,2);
10 pager.Click+=newPager.PagerButtonClick(pager_Click);
11 pager.PageIndex=1;
12 spPager.Children.Clear();
13 spPager.Children.Add(pager);
14 //第一次时创建GridHeader
15 CreateHeader();
16 }
17 }
18 else
19 MessageBox.Show(e.Error.Message);
20 canvas.Visibility=Visibility.Collapsed;
21 }
22
23 //用来存储HeaderText和数据库字段之间的对照信息
24 Dictionary<string,string>FieldDict=newDictionary<string,string>();
25 privatevoidCreateHeader()
26 {
27 varv=frompindgData.Columns
28 wherepisDataGridBoundColumn
29 selectp;
30 foreach(DataGridBoundColumncolumninv.ToList())
31 {
32 stringfieldname=column.Binding.Path.Path;
33 Stylestyle_header=Resources["grid-header"]asStyle;
34 column.HeaderStyle=style_header;
35
36 //本来这里我是希望可以直接设置Header的FieldText为字段名的,但是却找不到什么好的方法,
37 //
38 //<my:GridHeaderHeaderText="{TemplateBindingContent}"Height="Auto"Loaded="GridHeader_Loaded"/>
39 //Resources中这里也不能直接绑定FieldText为Binding.Path.Path,因为这里是从DataGridColumnHeader来的,
40 //DataGridColumnHeader只有Content,而找不到对应的绑定信息。
41 //
42 //另外,通过访问Style的Setter,我也只能获取到ControlTemplate,但是ControlTemplate下面的内容,也就是my:GridHeader取怎么也获取不到,
43 //如果有高人知道,请指教一下。谢谢
44 //
45 //所以,没办法,只能暂时把字段名和HeaderText都保存到Dictionary里面,供后面使用
46
47 FieldDict.Add(column.Header.ToString(),fieldname);
48 }
49 }
50
51 privatevoidGridHeader_Loaded(objectsender,RoutedEventArgse)
52 {
53 GridHeaderheader=senderasGridHeader;
54 header.OnFilter+=newGridHeader.FilterTextEvent(header_OnFilter);
55 header.OnSort+=newGridHeader.HeaderClickEvent(header_OnSort);
56 stringfieldtext;
57 //在这里,我们对Header的FieldText设置为字段名。
58 //如果能在这里获取到当前的Column的话,前面就不要用Dictionary了,但是这里我仍然不知道该怎么获取到当前的Column。
59 if(FieldDict.TryGetValue(header.HeaderText,outfieldtext))
60 header.FieldText=fieldtext;
61 }
62
63 voidheader_OnSort(stringfieldname)
64 {
65 //这里具体的代码就不写了。
66 //在获取到字段名之后,对数据进行排序。
67 MessageBox.Show("对字段:"+fieldname+"进行排序");
68 }
69
70 voidheader_OnFilter(stringfieldname,stringfiltertext)
71 {
72 //这里具体的代码就不写了。
73 //在获取到字段名和关键字只有,就可以通过WCF获取到指定的数据了。
74 MessageBox.Show("对字段:"+fieldname+"按照"+filtertext+"进行过滤");
75 }
ok,打完手工。
Tags:Silverlight 学习 笔记
编辑录入:爽爽 [复制链接] [打 印]- ››笔记本蓝屏错误代码0X0000000A故障处理
- ››silverlight全屏显示图片
- ››Silverlight MVVM 模式(一) 切近实战
- ››学习网站日志分析:网站日志分析各项指标
- ››学习:Ylmf OS安装全过程(视频)
- ››学习了SEO可以做哪些事
- ››学习 Linux,101: 保持文件系统的完整性
- ››Silverlight for Windows Phone 7开发系列(1):...
- ››Silverlight for Windows Phone 7开发系列(2):...
- ››Silverlight for Windows Phone 7开发系列(3):...
- ››Silverlight for Windows Phone 7开发系列(4):...
- ››学习Java,C等程序开发的十大秘诀
更多精彩
赞助商链接