(排班表二)后台动态绘制Grid表格

 后台动态绘制值班表(Grid表格)

要求:表头除了值班人姓名,还要显示日期,及每天的星期值,用斜杠‘/’分隔。即:几号/星期几

最终实现的效果:根据查询的年月显示每个值班人查询月份每天的值班信息

注:当查询月份不足31天时,显示空白列。如下图:

          

1.前台页面(WPF页面.xaml)显示

 1   <Grid Background="White">
 2                                 <Grid.RowDefinitions>
 3                                     <RowDefinition Height="35"></RowDefinition>
 4                                     <RowDefinition Height="*"></RowDefinition>
 5                                     <!--<RowDefinition Height="30"></RowDefinition>
 6                                     <RowDefinition Height="0.5*"></RowDefinition>-->
 7                                 </Grid.RowDefinitions>
 8 
 9                                 <!--筛选条件-->
10                                 <Grid>
11                                     <Grid.ColumnDefinitions>
12                                         <ColumnDefinition Width="120"></ColumnDefinition>
13                                         <ColumnDefinition Width="100"></ColumnDefinition>
14                                         <ColumnDefinition Width="110"></ColumnDefinition>
15                                         <ColumnDefinition Width="80"></ColumnDefinition>
16                                         <ColumnDefinition Width="120"></ColumnDefinition>
17                                         <ColumnDefinition Width="150"></ColumnDefinition>
18                                     </Grid.ColumnDefinitions>
19 
20                                     <!-- 日期星期(方法一)-->
21                                     <StackPanel Orientation="Horizontal" VerticalAlignment="Center" Margin="5 0">
22                                         <TextBlock Text=" 年度:" VerticalAlignment="Center"></TextBlock>
23                                         <telerik:RadComboBox x:Name="rcb_year" VerticalAlignment="Center" HorizontalContentAlignment="Right" Width="65" SelectionChanged="rcb_year_SelectionChanged"/>
24                                     </StackPanel>
25 
26                                     <StackPanel Grid.Column="1" Orientation="Horizontal" VerticalAlignment="Center">
27                                         <TextBlock Text=" 月份:" VerticalAlignment="Center"></TextBlock>
28                                         <telerik:RadComboBox x:Name="rcb_month" VerticalAlignment="Center" HorizontalContentAlignment="Right" Width="55" SelectionChanged="rcb_month_SelectionChanged"/>
29                                     </StackPanel>
30 
31                                     <!--导出-->
32                                     <telerik:RadButton Grid.Row="0" Grid.Column="2" x:Name="btn_export_1" Background="#FA824F" Margin="5" CornerRadius="2" FontSize="13" Click="btn_export_1_Click">
33                                         <StackPanel Orientation="Horizontal">
34                                             <Image Source="/PMS_BZ;component/Images/edit.png" Margin="3" Height="12"></Image>
35                                             <TextBlock Text=" 导出值班表 " Foreground="#FFFFFF" VerticalAlignment="Center"></TextBlock>
36                                         </StackPanel>
37                                     </telerik:RadButton>
38                                     <!--刷新-->
39                                     <telerik:RadButton Grid.Row="0" Grid.Column="3" x:Name="btn_refresh_1" Background="Orange" Margin="5" CornerRadius="2" FontSize="13" Click="btn_refresh_1_Click">
40                                         <StackPanel Orientation="Horizontal">
41                                             <Image Source="/PMS_BZ;component/Images/reset.png" Margin="3" Height="12"></Image>
42                                             <TextBlock Text=" 刷 新 " Foreground="#FFFFFF" VerticalAlignment="Center"></TextBlock>
43                                         </StackPanel>
44                                     </telerik:RadButton>
45 
46                                     <!--添加值班-->
47                                     <telerik:RadButton Grid.Row="0" Grid.Column="4" x:Name="btn_add_schedule" Background="#1DA02B" Margin="5" CornerRadius="2" FontSize="13" Click="btn_add_schedule_Click" Visibility="Collapsed">
48                                         <StackPanel Orientation="Horizontal">
49                                             <Image Source="/PMS_BZ;component/Images/input.png" Margin="3" Height="12"></Image>
50                                             <TextBlock Text=" 值班信息管理 " Foreground="#FFFFFF" VerticalAlignment="Center"></TextBlock>
51                                         </StackPanel>
52                                     </telerik:RadButton>
53 
54                                     <!--添加案件录入权限信息-->
55                                     <telerik:RadButton Grid.Row="0" Grid.Column="5" x:Name="btn_add_power" Background="DarkGoldenrod" Margin="5" CornerRadius="2" FontSize="13" Click="btn_add_power_Click" Visibility="Collapsed">
56                                         <StackPanel Orientation="Horizontal">
57                                             <Image Source="/PMS_BZ;component/Images/comp.png" Margin="3" Height="12"></Image>
58                                             <TextBlock Text=" 案件录入权限管理 " Foreground="#FFFFFF" VerticalAlignment="Center"></TextBlock>
59                                         </StackPanel>
60                                     </telerik:RadButton>
61                                 </Grid>
62                                 <!--排班表-->
63                                 <ScrollViewer x:Name="sv_data" Grid.Row="1" BorderBrush="#25A0DA" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto">
64 
65                                     <Grid x:Name="rgv_schedule" Background="White" Width="3150"></Grid>
66 
67                                 </ScrollViewer>
68 
69                                 <!--案件录入权限表-->
70                                 <!--<StackPanel Grid.Row="2" Background="#25A0DA" Orientation="Horizontal">
71                                     <Image Source="/PMS_BZ;component/Images/grid.png" Height="20" Margin="5 0"></Image>
72                                     <TextBlock Text="案件录入权限表" FontSize="13" VerticalAlignment="Center" Foreground="White" Margin="5 0"></TextBlock>
73 
74                                     <telerik:RadButton Grid.Row="0" Grid.Column="3" x:Name="btn_export_power" Background="#FA824F" Margin="5 2" CornerRadius="2" FontSize="13" Click="btn_export_power_Click">
75                                         <StackPanel Orientation="Horizontal">
76                                             <Image Source="/PMS_BZ;component/Images/edit.png" Margin="3" Height="12"></Image>
77                                             <TextBlock Text=" 导出录入权限表 " Foreground="#FFFFFF" VerticalAlignment="Center"></TextBlock>
78                                         </StackPanel>
79                                     </telerik:RadButton>
80                                 </StackPanel>
81 
82                                 <ScrollViewer x:Name="sv_data_power" Grid.Row="3" BorderBrush="#25A0DA" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto">
83                                     <Grid x:Name="rgv_power" Background="White" Width="3150"></Grid>
84                                 </ScrollViewer>-->
85 
86                             </Grid>
显示页面代码

2.初始化年度、月份下拉框数据:年度只显示最近5年的年度

 1         // 设置时间控件的默认值
 2         private void SetDateControl()
 3         {
 4             try
 5             {
 6                 RadComboBoxItem cmbi_year;
 7                 RadComboBoxItem cmbi_month;
 8                 int years = DateTime.Now.Year;
 9          //设置年度
10                 for (int i = 0; i < 5; i++)
11                 {
12                     int year = years - i;
13                     cmbi_year = new RadComboBoxItem();
14                     cmbi_year.Tag = cmbi_year.Content = year;
15                     rcb_year.Items.Add(cmbi_year);
16                     if (year == DateTime.Now.Year)
17                     {
18                         rcb_year.SelectedItem = cmbi_year;
19                     }
20                 }
21              //设置月份
22                 for (int i = 1; i <= 12; i++)
23                 {
24                     cmbi_month = new RadComboBoxItem();
25                     cmbi_month.Tag = i;
26                     cmbi_month.Content = i.ToString() + "";
27                     rcb_month.Items.Add(cmbi_month);
28                 }
29                 if (Convert.ToInt32((rcb_year.SelectedItem as RadComboBoxItem).Tag) == DateTime.Now.Year)
30                 {
31                     rcb_month.SelectedIndex = DateTime.Now.Month - 1;
32                 }
33                 else
34                     rcb_month.SelectedIndex = 11;
35             }
36             catch (Exception ex)
37             {
38                 MessageBox.Show(ex.Message);
39             }
40         }
41 
42          // 窗体加载
43         private void Page_Loaded(object sender, RoutedEventArgs e)
44         {
45             MyRadBusy.IsBusy = true;
46 
47             System.Threading.ThreadPool.QueueUserWorkItem((threadState) =>
48             {
49                 System.Threading.Thread.Sleep(800);
50                 Dispatcher.BeginInvoke((Action)delegate()
51                 {
52                     try
53                     {
54                         SetDateControl();//时间变化
55                     }
56                     catch (Exception ex)
57                     {
58                         RadWindow.Alert(ex.Message);
59                     }
60                 });
61             });
62         }
设置年度、月份

3.当年度或月份发生改变时,值班表信息也相应的发生改变

 1         //年份发生改变
 2         private void rcb_year_SelectionChanged(object sender, Telerik.Windows.Controls.SelectionChangedEventArgs e)
 3         {
 4             BindingScheduleGrid();
 5         }
 6         //月份发生改变
 7         private void rcb_month_SelectionChanged(object sender, Telerik.Windows.Controls.SelectionChangedEventArgs e)
 8         {
 9             BindingScheduleGrid();
10         }

猜你喜欢

转载自www.cnblogs.com/KLLQBKY/p/9299565.html