none
Как DataGrid разделить на страницы? RRS feed

  • Вопрос

  • Здравствуйте

    Подскажите пожалуйста как DataGrid каким-то другим образом разделить на страницы? Второй день ищу по форумам, и везде туманные ответы.

    1 февраля 2012 г. 6:18

Ответы

Все ответы

    • Предложено в качестве ответа ulcerModerator 1 февраля 2012 г. 11:22
    • Отменено предложение в качестве ответа ulcerModerator 1 февраля 2012 г. 11:23
    1 февраля 2012 г. 6:58
    Отвечающий
  • спасибо за ответ, а как это распечатывать?  на А4?

    у меня сейчас такой бардак:

     <FlowDocumentPageViewer>
                <FlowDocument>
                    <Paragraph>
                                              
                            <DataGrid AutoGenerateColumns="False" EnableRowVirtualization="True" ItemsSource="{Binding}" Name="mainDataGrid" 
                                RowDetailsVisibilityMode="VisibleWhenSelected">
    
                                <DataGrid.Columns>
                                    <DataGridTextColumn x:Name="codeColumn" Binding="{Binding Path=Code}" Header="Code" Width="SizeToHeader" />
                                    <DataGridTextColumn x:Name="studenIDColumn" Binding="{Binding Path=StudenID}" Header="Studen ID" Width="SizeToHeader" />
                                    <DataGridTextColumn x:Name="studentNameColumn" Binding="{Binding Path=StudentName}" Header="Student Name" Width="SizeToHeader" />
                                    <DataGridTextColumn x:Name="groupIDColumn" Binding="{Binding Path=GroupID}" Header="Group ID" Width="SizeToHeader" />
                                    <DataGridTextColumn x:Name="groupNameColumn" Binding="{Binding Path=GroupName}" Header="Group Name" Width="SizeToHeader" />
                                    <DataGridTextColumn x:Name="teacherColumn" Binding="{Binding Path=Teacher}" Header="Teacher" Width="SizeToHeader" />
                                    <DataGridTextColumn x:Name="sessionIDColumn" Binding="{Binding Path=SessionID}" Header="Session ID" Width="SizeToHeader" />
                                    <DataGridTextColumn x:Name="iPaddressColumn" Binding="{Binding Path=IPaddress}" Header="IPaddress" Width="SizeToHeader" />
                                    <DataGridTextColumn x:Name="testDateColumn" Binding="{Binding Path=TestDate}" Header="Test Date" Width="SizeToHeader" />
                                    <DataGridTextColumn x:Name="startTimeColumn" Binding="{Binding Path=StartTime}" Header="Start Time" Width="SizeToHeader" />
                                    <DataGridTextColumn x:Name="endTimeColumn" Binding="{Binding Path=EndTime}" Header="End Time" Width="SizeToHeader" />
                                    <DataGridTextColumn x:Name="ballColumn" Binding="{Binding Path=Ball}" Header="Ball" Width="SizeToHeader" />
                                    <DataGridTextColumn x:Name="otsenkaColumn" Binding="{Binding Path=Otsenka}" Header="Otsenka" Width="SizeToHeader" />
                                    <DataGridTextColumn x:Name="subjectColumn" Binding="{Binding Path=Subject}" Header="Subject" Width="SizeToHeader" />
                                    <DataGridTextColumn x:Name="isOchnayaColumn" Binding="{Binding Path=IsOchnaya}" Header="Is Ochnaya" Width="SizeToHeader" />
                                </DataGrid.Columns>
                                
                            </DataGrid>
                        
                    </Paragraph>
                </FlowDocument>            
            </FlowDocumentPageViewer>
    


    жаль не работает...

    1 февраля 2012 г. 9:33
    • Помечено в качестве ответа a_basic_man 1 февраля 2012 г. 15:10
    1 февраля 2012 г. 12:36
    Отвечающий
  • еще вопрос...

    таблицу для FlowDoc строю так

    Table TableConstructor(DataTable dataTable)
            {
                Table table1 = new Table();
                
                table1.CellSpacing = 0;
                table1.Background = Brushes.White;
    
                // Столбцы таблицы.
                int numberOfColumns = dataTable.Columns.Count;
    
                for (int x = 0; x < numberOfColumns; x++)
                {
                    table1.Columns.Add(new TableColumn());
                }
                            
                TableRow currentRow;
                            
                table1.RowGroups.Add(new TableRowGroup());
                table1.RowGroups[0].Rows.Add(new TableRow());
                
                currentRow = table1.RowGroups[0].Rows[0];
    
                // Заголовок таблицы.
                currentRow.FontSize = 18;
                currentRow.FontWeight = FontWeights.Bold;
    
                for (int x = 0; x < numberOfColumns; x++)
                {                
                    currentRow.Cells.Add(new TableCell(new Paragraph(new Run(dataTable.Columns[x].Caption))));
                    currentRow.Cells[x].BorderBrush = Brushes.Black;
                    currentRow.Cells[x].BorderThickness = new Thickness(1);
                }
    
                // Содержание таблицы.
                for (int y = 0; y < dataTable.Rows.Count; y++)
                {                
                    table1.RowGroups[0].Rows.Add(new TableRow());
                    currentRow = table1.RowGroups[0].Rows[y + 1];
                                    
                    currentRow.FontSize = 12;
                    currentRow.FontWeight = FontWeights.Normal;
    
                    for (int x = 0; x < numberOfColumns; x++)
                    {                    
                        currentRow.Cells.Add(new TableCell(new Paragraph(new Run(dataTable.Rows[y][x].ToString()))));
                        currentRow.Cells[x].BorderBrush = Brushes.Black;
                        currentRow.Cells[x].BorderThickness = new Thickness(1);
                        currentRow.Cells[x].LineHeight = 1;
                    }
                }
    
    
                return table1;
            }
    

    Теперь не могу подрегулировать высоту строк, высота всех ячеек автоматический подбирается по высоте ячейки с максимальной высотой.

    Свойтсво Height нет ни у строк ни у ячеек.

    4 февраля 2012 г. 5:55
  • У параграфа и ячейки есть Margin и Padding, можете ими поиграться. Кстати, вы так же можете использовать Grid.

    Для большего понимания зачем нужен FlowDocument, посмотрите вот это.

    6 февраля 2012 г. 10:03
    Отвечающий
  • все, разобрался, спасибо!

    7 февраля 2012 г. 2:40