Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
DataGrid with totals
Message
De
03/03/2013 14:25:56
 
 
À
03/03/2013 07:06:50
Information générale
Forum:
ASP.NET
Catégorie:
Windows Presentation Foundation (WPF)
Divers
Thread ID:
01567310
Message ID:
01567329
Vues:
23
>>>Hi,
>>>
>>>in XAML is there a way to add a row of totals to the bottom of a datagrid?
>>>
>>>For example I want something like this:
>>>
>>>
Invoice #   Invoice Amount
>>>1234        100.00
>>>1235        150.00
>>>2           250.00
>>>
>>>where 2 is the count of invoices and 250.00 is the total of the Invoice Amount column.
>>
>>I don't think there's an easy way of doing this, certainly not in XAML. If the row content is static (ie not adding, deleting or editing) then it's not too difficult - otherwise, unless you have very strong reasons for doing so, I'd suggest simply showing those values in textblocks below the grid (I think this came up a while back?).
>>
>>Alternatively you could look for a third-party grid with this ability - I think DevExpress handle it ?
>
>It is on a grid where items can be added, edited and deleted (albeit the editing is done on another tab). If I show them in textblocks below the grid is it easy to change their width and position if somebody rearranges the grid's columns (position and width)?

The sizing is easy enough:
    <StackPanel>
        <DataGrid CanUserResizeColumns="True" AutoGenerateColumns="True">
            <DataGrid.Columns>
                <DataGridTextColumn Header="Column1" x:Name="Column1" Width="100"></DataGridTextColumn>
                <DataGridTextColumn  Header="Column2" x:Name="Column2" Width="200"></DataGridTextColumn>
                <DataGridTextColumn  Header="Column3" x:Name="Column3" Width="100"></DataGridTextColumn>
            </DataGrid.Columns>
        </DataGrid>
        <StackPanel Orientation="Horizontal">
            <TextBlock Background="Red"  Width="{Binding ElementName=Column1,Path=ActualWidth}"></TextBlock>
            <TextBlock Background="Yellow" Width="{Binding ElementName=Column2,Path=ActualWidth}"></TextBlock>
            <TextBlock Background="Green"  Width="{Binding ElementName=Column3,Path=ActualWidth}"></TextBlock>
        </StackPanel>
    </StackPanel>
but if the user is allowed to change the column order then it would be more difficult (not even sure it's possible). One approach *might* be to use a Grid instead of the horizontal StackPanel and somehow bind the Grid column used by each TextBlock to the Column order of the DataGrid.

Don't suppose you could consider showing the totals in the header instead of a 'footer' ?
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform