WEB开发网
开发学院图形图像Flash Silverlight学习笔记三:如何自定义DataGrid的Hea... 阅读

Silverlight学习笔记三:如何自定义DataGrid的Header

 2008-12-30 11:53:52 来源:WEB开发网   
核心提示: 在获取数据之后,对DataGrid的Header进行了处理,Silverlight学习笔记三:如何自定义DataGrid的Header(5),新增了CreateHeader()这个方法,1privatevoidclient_GetProductsPagingCompleted(object

在获取数据之后,对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,打完手工。

上一页  1 2 3 4 5 

Tags:Silverlight 学习 笔记

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