2017-10-26 24 views
0

私はデータベースのアイテムでDataGridにデータを入力するwpfアプリケーションに取り組んでいます。アイテムは、コーヒーショップでユーザーを表し、その画像がどのくらいのお金、彼らが作った...ここにある :ユーザー名でデータグリッドに項目をグループ化する方法

enter image description here

  • ジョン
    現金$ 192,00

  • ジョンドウ
    現金$ 75,00
    カート75,00

は、今のところ私はこのように私のデータグリッドを移入しています:

dtgCashAmount.ItemsSource = null; 
dtgCashAmount.ItemsSource = BController.GetAllFinancialTransactionsByAllUsers(dateFrom, dateTo); 

しかし、私は(ユーザー名でacctuallyグループ項目に)このような何かを試してみました - しかし、それは動作しませんでした:

まず私はWindow.Resourcesを追加しました私はでこれを追加しました。この後

<Window.Resources> 
    <Style x:Key="GroupHeaderStyle" TargetType="{x:Type GroupItem}"> 
     <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="{x:Type GroupItem}"> 
         <StackPanel> 
          <TextBlock Text="{Binding Name}"/> 
          <ItemsPresenter /> 
         </StackPanel> 
        </ControlTemplate> 
       </Setter.Value> 
     </Setter> 
    </Style> 

:私のXAMLで

<GroupStyle ContainerStyle="{StaticResource GroupHeaderStyle}"> 
    <GroupStyle.Panel> 
     <ItemsPanelTemplate> 
      <DataGridRowsPresenter/> 
     </ItemsPanelTemplate> 
    </GroupStyle.Panel> 
</GroupStyle> 

そして、私のC#コードで私はこのような何か試してみた:

ListCollectionView collection = new ListCollectionView(DatabaseResults); 
collection.GroupDescriptions.Add(new PropertyGroupDescription("Username")); 

を基本的に私は言った:オーケーグループIが提供されるように、私はユーザー名で、データベースから取得し、これらの結果は、結果を得るために上記の私の質問(下の画像)。 残念ながら私は次のエラーを受け取りました:

ItemsSourceを使用する前に、アイテムコレクションを空にする必要があります。私はどこにも私のデータグリッドのソースを設定していないよという確認としても

..

のDataGrid XAML:

<DataGrid Grid.Row="1" IsReadOnly="True" Name="dtgCashAmount " EnableRowVirtualization ="True" EnableColumnVirtualization = "True" GridLinesVisibility="Horizontal" AutoGenerateColumns="False" RowHeaderWidth="0" CanUserAddRows="False"> 
      <GroupStyle ContainerStyle="{StaticResource GroupHeaderStyle}"> 
       <GroupStyle.Panel> 
        <ItemsPanelTemplate> 
         <DataGridRowsPresenter/> 
        </ItemsPanelTemplate> 
       </GroupStyle.Panel> 
      </GroupStyle> 

      <DataGrid.CellStyle> 
       <StaticResource ResourceKey="DataGridCentering"/> 
      </DataGrid.CellStyle> 

      <DataGrid.Resources> 
       <Style TargetType="{x:Type DataGridColumnHeader}"> 
        <Setter Property="Background" Value="#0091EA"/> 
        <Setter Property="Opacity" Value="1"/> 
        <Setter Property="Foreground" Value="White"/> 
        <Setter Property="HorizontalContentAlignment" Value="Center" /> 
        <Setter Property="FontFamily" Value="Arial"/> 
        <Setter Property="Height" Value="40"/> 
       </Style> 
       <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="LightBlue"/> 
      </DataGrid.Resources> 

      <DataGrid.Columns> 
       <DataGridTextColumn x:Name="colPaymentType" Binding="{Binding PaymentType.Title }" Header="Payment type" Foreground="Black" FontSize="{x:Static local:Globals.dataGridfontSizeContent}" FontFamily="Verdana" Width="10*"/> 
       <DataGridTextColumn x:Name="colKorisnik" Binding="{Binding Username }" Header="Username" Foreground="Black" FontSize="{x:Static local:Globals.dataGridfontSizeContent}" FontFamily="Verdana" Width="10*"/> 
       <DataGridTextColumn x:Name="colPrice" Binding="{Binding TotalAmount}" Header="Total amount" Foreground="Black" FontSize="{x:Static local:Globals.dataGridfontSizeContent}" FontFamily="Verdana" Width="10*"/> 
      </DataGrid.Columns> 
</DataGrid> 

MM8が、それは次のようになります私を助けた後、 :

enter image description here

私は(ユーザーテストのために、それは組織的うれしいです)より進歩してインターネットの例で見た:

enter image description here

MM8メイトが、それはこのような何かを達成することが可能でしょうか?

+0

dtgCashAmountのXAMLまたはグループ化されたアイテムを表示している要素を投稿します。GroupStyleをに配置しましたか? – mm8

+0

1人のユーザーのすべてのデータを1行に表示するか、またはすぐ隣に表示しますか?金額とタイプを入力してにユーザの「お支払い」を変更してください。だから、支払リストが表示されるフィールドがある – LenglBoy

+0

@ mm8それは –

答えて

1

GroupStyle<DataGrid.GroupStyle>要素内に定義する必要があります。

<DataGrid.GroupStyle> 
    <GroupStyle ContainerStyle="{StaticResource GroupHeaderStyle}"> 
     <GroupStyle.Panel> 
      <ItemsPanelTemplate> 
       <DataGridRowsPresenter/> 
      </ItemsPanelTemplate> 
     </GroupStyle.Panel> 
    </GroupStyle> 
</DataGrid.GroupStyle> 

...とない<DataGrid>要素の直接の子要素として。

+0

これは仲間を助けました!どうもありがとう!しかし、私の編集を確認してください私はそこに2つの画像を投稿.. –

関連する問題