【问题标题】:wpf - Select date range and generate column headerswpf - 选择日期范围并生成列标题
【发布时间】:2017-03-04 17:41:59
【问题描述】:

是否可以使用两个日期选择器来选择日期范围?第一个日期选择器代表开始日期,第二个日期选择器代表结束日期。

一旦选择了这些日期,是否可以生成带有包含这些日期的标题的数据网格列?

<DataGrid x:Name="dgTemplate" AutoGenerateColumns="False">
        <DataGrid.Columns>
            <DataGridTextColumn>
                <DataGridTextColumn.Header>
                    <ComboBox ItemsSource="{Binding DataContext.Employees, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}}" SelectedValue="{Binding DataContext.SelectedEmployee, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}, Mode=TwoWay}" IsTextSearchEnabled="True" IsEditable="True" DisplayMemberPath="EmpName" Style="{DynamicResource MaterialDesignComboBox}" materialDesign:HintAssist.Hint="Employee Name"/>
                </DataGridTextColumn.Header>
            </DataGridTextColumn>

            <!--DataGridDateColumns-->

            <DataGridTextColumn Header="Total"/>

            <DataGridTextColumn Header="Rate"/>

            <DataGridTextColumn Header="Amount"/>

            <DataGridTextColumn Header="Deduction"/>
        </DataGrid.Columns>
    </DataGrid>

注释部分应该是列出现的位置。标题中的日期应采用“dd/mm/yyyy”格式,可以是“Mon 01/Feb/2017”或“01/02/2017”。

但我需要的最重要方面是选择范围后出现的列。

【问题讨论】:

  • 是的,您可以通过多种方式相当轻松地做到这一点,例如创建自定义 DataGridBoundColumnAttachedProperty

标签: c# wpf datagrid datepicker


【解决方案1】:

使用循环(for、while 等)遍历范围内的日期。为每个日期创建并添加一个新列。

这样的事情应该可以解决问题:

DateTime startDate = (DateTime)dtpStartDate.SelectedDate;
DateTime endDate = (DateTime)dtpEndDate.SelectedDate;

  if (startDate != null && endDate != null)
  {
      while (startDate < endDate)
      {
          DataGridTextColumn newColumn = new DataGridTextColumn();
          newColumn.Header = startDate.ToShortDateString();

          dgTemplate.Columns.Add(newColumn);

          startDate = startDate.AddDays(1);
      }
  }

【讨论】:

  • 谢谢,但我怎样才能将它们放在特定的索引处?目前它们出现在最后。 编辑 我刚刚想通了; dgTemplate.Columns.Insert(1, newColumn);
  • 很高兴能帮上忙!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-08
  • 1970-01-01
相关资源
最近更新 更多