silverlight RadGridView總結二


    系列二
    實現RadGridView行中添加不同控件,並在控件中綁定不同的數據源
    先上一段前台代碼   

View Code
 1 <telerik:RadGridView Grid.Row="2" x:Name="activitiesGrid1" 
 2                              AutoGenerateColumns="False" GridLinesVisibility="None" Visibility="Collapsed" 
 3                              UseLayoutRounding="False"  IsReadOnly="True" 
 4                              RowHeight="20" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" SelectionMode="Single"
 5                              HorizontalGridLinesBrush="Transparent" VerticalGridLinesBrush="Transparent"
 6                              Background="{x:Null}" BorderBrush="{x:Null}"
 7                              IsFilteringAllowed="False" RowIndicatorVisibility="Collapsed" 
 8                              CanUserFreezeColumns="False" ShowGroupPanel="False" 
 9                              HeaderRowStyle="{StaticResource SalesInfoGridViewHeaderRowStyle}" 
10                              GroupRowStyle="{StaticResource SalesInfoGridViewGroupRowStyle}"  
11                              RowStyle="{StaticResource SalesInfoGridViewRowStyle}"
12                              ScrollViewer.HorizontalScrollBarVisibility="Auto"
13                              ScrollViewer.VerticalScrollBarVisibility="Auto"  Height="200">
14                             <telerik:RadGridView.Columns>
15                                 <telerik:GridViewColumn Header="歸屬營業廳ID" Width="*" IsVisible="False">
16                                     <telerik:GridViewColumn.CellTemplate>
17                                         <DataTemplate>
18                                             <TextBlock  Text="{Binding ROOM_ID}" />
19                                         </DataTemplate>
20                                     </telerik:GridViewColumn.CellTemplate>
21                                 </telerik:GridViewColumn>
22                                 <telerik:GridViewColumn Header="歸屬縣ID" Width="*" IsVisible="False">
23                                     <telerik:GridViewColumn.CellTemplate>
24                                         <DataTemplate>
25                                             <TextBlock  Text="{Binding TOWN_ID}" />
26                                         </DataTemplate>
27                                     </telerik:GridViewColumn.CellTemplate>
28                                 </telerik:GridViewColumn>
29                                 <telerik:GridViewColumn Header="歸屬營業廳名稱" Width="*">
30                                     <telerik:GridViewColumn.CellTemplate>
31                                         <DataTemplate>
32                                             <TextBlock  Text="{Binding ROOM_NAME}" />
33                                         </DataTemplate>
34                                     </telerik:GridViewColumn.CellTemplate>
35                                 </telerik:GridViewColumn>
36                                 <telerik:GridViewColumn Header="歸屬縣名稱" Width="*">
37                                     <telerik:GridViewColumn.CellTemplate>
38                                         <DataTemplate>
39                                             <TextBlock Text="{Binding COUNTY_NAME}" FontSize="14"  Width="100"/>
40                                         </DataTemplate>
41                                     </telerik:GridViewColumn.CellTemplate>
42                                 </telerik:GridViewColumn>
43                                 <telerik:GridViewColumn Header="歸屬營業廳類型" Width="*">
44                                     <telerik:GridViewColumn.CellTemplate>
45                                         <DataTemplate>
46                                             <telerik:RadComboBox EmptyText="{Binding ROOM_TYPE}"  Width="100" FontSize="14" Text="{Binding  ROOM_TYPE}"
47                                                                  HorizontalAlignment="Left" Style="{StaticResource RadComboBoxStyle1}" >
48                                                 <telerik:RadComboBoxItem Content="形象廳"  Style="{StaticResource RadComboBoxItemStyle1}" />
49                                                 <telerik:RadComboBoxItem Content="市縣營業廳"  Style="{StaticResource RadComboBoxItemStyle1}"/>
50                                                 <telerik:RadComboBoxItem Content="鄉鎮營業廳"  Style="{StaticResource RadComboBoxItemStyle1}"/>
51                                             </telerik:RadComboBox>
52                                         </DataTemplate>
53                                     </telerik:GridViewColumn.CellTemplate>
54                                 </telerik:GridViewColumn>
55                                 <telerik:GridViewColumn Header="創建時間" Width="*">
56                                     <telerik:GridViewColumn.CellTemplate>
57                                         <DataTemplate>
58                                             <TextBlock  Text="{Binding CREATETIME}" />
59                                         </DataTemplate>
60                                     </telerik:GridViewColumn.CellTemplate>
61                                 </telerik:GridViewColumn>
62                                 <telerik:GridViewColumn Header="狀態" Width="*">
63                                     <telerik:GridViewColumn.CellTemplate>
64                                         <DataTemplate>
65                                             <telerik:RadComboBox EmptyText="{Binding ROOM_STAT}" Text="{Binding ROOM_STAT}" Width="100" FontSize="14"  HorizontalAlignment="Left" Style="{StaticResource RadComboBoxStyle1}" >
66                                                 <telerik:RadComboBoxItem Content="正常"  Style="{StaticResource RadComboBoxItemStyle1}" />
67                                                 <telerik:RadComboBoxItem Content="異常"  Style="{StaticResource RadComboBoxItemStyle1}"/>
68                                             </telerik:RadComboBox>
69                                         </DataTemplate>
70                                     </telerik:GridViewColumn.CellTemplate>
71                                 </telerik:GridViewColumn>
72                                 <telerik:GridViewDataColumn DataMemberBinding="{Binding ROOM_DMXS}" Header="營業廳店面調節系數" Width="*" />
73                                 <telerik:GridViewColumn Header="是否3人以上營業廳" Width="*">
74                                     <telerik:GridViewColumn.CellTemplate>
75                                         <DataTemplate>
76                                             <telerik:RadComboBox EmptyText="{Binding IS_GREATERTHREE}" Text="{Binding IS_GREATERTHREE}" Width="100" 
77                                                                  FontSize="14"  HorizontalAlignment="Left" Style="{StaticResource RadComboBoxStyle1}" >
78                                                 <telerik:RadComboBoxItem Content=""  Style="{StaticResource RadComboBoxItemStyle1}" />
79                                                 <telerik:RadComboBoxItem Content=""  Style="{StaticResource RadComboBoxItemStyle1}"/>
80                                             </telerik:RadComboBox>
81                                         </DataTemplate>
82                                     </telerik:GridViewColumn.CellTemplate>
83                                 </telerik:GridViewColumn>
84                                 <telerik:GridViewColumn Header="" Width="*"     HeaderCellStyle="{StaticResource SalesInfoGridViewHeaderCellStyleFirst}"
85                                                         CellStyle="{StaticResource SalesInfoGridViewCellStyle}">
86                                     <telerik:GridViewColumn.CellTemplate>
87                                         <DataTemplate>
88                                             <telerik:RadButton   Style="{StaticResource RadButtonStyle}" Content="刪除"
89                                                              x:Name="ExceptXishu" Click="ExceptXishu_Click"
90                                                              FontSize="12" Foreground="White"  
91                                                              Tag="{Binding ID}"  
92                                                              Height="20" Width="50"
93                                                              />
94                                         </DataTemplate>
95                                     </telerik:GridViewColumn.CellTemplate>
96                                 </telerik:GridViewColumn>
97                             </telerik:RadGridView.Columns>
98                         </telerik:RadGridView>

在GridViewColumn中添加GridViewColumn.CellTemplate,並在其子節點添加DataTemplate,在其中添加你想要的控件。可以在不同的控件中設置數據源綁定。

我在給RadGridView賦值的時候是通過賦值LIST集合賦值。

例如,this.activitiesGrid.ItemsSource = e.Result.ToList();---此處指的是從服務引用中返回的數據源(大家都懂得)

若你想你的控件在展示的時候默認顯示第一行,請添加如下代碼:

View Code
1 if (this.activitiesGrid.Items.Count>0)
2                 {
3                     this.activitiesGrid.SelectedItem = activitiesGrid.Items[0];
4                 }      

在后台控制控件中某一列的顯示和隱藏
聲明GridViewColumn 對象,取得對象之后控制顯示和隱藏

GridViewColumn column = this.activitiesGrid.Columns[第幾行];

column.IsVisible = true;//顯示這一列

在后台取得某一行的數據源

(在這里我用了一個技巧,在給RadGridView綁定數據源的同時,我給每一個行的數據源綁定了一個ID,是為了取得每一個行的數據源)

在RadGridView控件中,每一行我定義一個控件,例如是RadButton控件,在他的Tag屬性中我綁定了這一行數據源的ID,點擊事件后我將這行的ID取出,然后可以得到其數據源,前后台代碼如下:

前台代碼:

View Code
 1 <telerik:GridViewColumn Header="刪除" Width="*"     HeaderCellStyle="{StaticResource SalesInfoGridViewHeaderCellStyleFirst}"
 2                                                         CellStyle="{StaticResource SalesInfoGridViewCellStyle}">
 3                                 <telerik:GridViewColumn.CellTemplate>
 4                                     <DataTemplate>
 5                                         <telerik:RadButton   Style="{StaticResource RadButtonStyle}" Content="刪除"
 6                                                              FontSize="12" Foreground="White"  
 7                                                              Tag="{Binding ID}"  
 8                                                              Height="20" Width="50"
 9                                                              Click="RadButton_Click_2" />
10                                     </DataTemplate>
11                                 </telerik:GridViewColumn.CellTemplate>
12                             </telerik:GridViewColumn>

后台代碼:

View Code
 1  private void btDeny_Click(object sender, RoutedEventArgs e)
 2         {
 3             RadButton btn = sender as RadButton;
 4             int num = Convert.ToInt32(btn.TabIndex.ToString());
 5             GridViewRow row=new GridViewRow();
 6             var item = this.BackUserDetailes.Items[num];//綁定數據源的同時,給從庫中返回的數據源制定了ID
 7              row=this.BackUserDetailes.ItemContainerGenerator.ContainerFromItem(item) as GridViewRow;
 8 //得到Row對象后可以將其的數據源轉換成你想要的類型
 9 想要的類型=row.DataContext as 想要的類型;
10          }

也可以用另外一種簡單的方式獲得這一行的數據源
想要的類型=btn.DataContext as 想要的類型。

 在后台獲取行中有不同控件值的方法

取得了GridViewRow對象之后,可以取得這一行的每個單元格,即可把單元格中的控件取出。代碼如下:

例如,你在這一單元格中放置的是RadComboBox控件,可以通過:RadComboBox box=row.Cells[第幾個單元格].Content as RadComboBox;將RadComboBox對象取出,並進行你想要的操作。

在RadGridView中對某一列的特殊的控件賦值,通過這一列的控件中聲明其Loaded事件,為這一行的特殊的控件賦值。

例如下例:

View Code
 1  <telerik:GridViewColumn Header="給特殊列綁定單個數據" Width="*"     HeaderCellStyle="{StaticResource SalesInfoGridViewHeaderCellStyleFirst}"
 2                                                         CellStyle="{StaticResource SalesInfoGridViewCellStyle}" >
 3                                 <telerik:GridViewColumn.CellTemplate>
 4                                     <DataTemplate>
 5                                         <telerik:RadComboBox EmptyText="{Binding 綁定的數據源中字段名稱}"  Text="{Binding 綁定的數據源中字段名稱}" 
 6                                                              FontSize="14" Width="200" HorizontalAlignment="Left" 
 7                                                              Style="{StaticResource RadComboBoxStyle1}"    
 8                                                              Loaded="RadComboBox_Loaded">
 9                                             <telerik:RadComboBoxItem Content="{Binding 綁定的數據源中字段名稱}" Tag="{Binding CHNL_ID}" Style="{StaticResource RadComboBoxItemStyle1}" />
10                                         </telerik:RadComboBox>
11                                     </DataTemplate>
12                                 </telerik:GridViewColumn.CellTemplate>
13                             </telerik:GridViewColumn>

其中,EmptyText="{Binding 綁定的數據源的名稱}"指的是其RadComboBox在沒有 默認顯示第一個值時的賦予該控件的值。
后台代碼如下:

View Code
1  private void RadComboBox_Loaded(object sender, RoutedEventArgs e)
2         {
3             RadComboBox box = sender as RadComboBox;
4             box.Items.Clear();
5             (sender as RadComboBox).DisplayMemberPath = "ROOM_NAME";
6             (sender as RadComboBox).Tag = this.chnlList[0].ROOM_ID;
7             (sender as RadComboBox).ItemsSource = 數據源名稱;           
8             box.ItemsSource = chnlList;
9         }

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM