powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Выводятся не все данные в DataGrid
2 сообщений из 2, страница 1 из 1
Выводятся не все данные в DataGrid
    #37940417
samart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, есть проблема, не могу понять, в чем она, пожалуйста, помогите. Извиняюсь, если такая тема уже была на форуме, но я ее не нашел(

Есть DataGrid, в который выводится таблица из DataSet, которая, в свою очередь - результат SELECT'а из БД Oracle. Проблема в том, что выводятся не все данные из столбцов, а точнее, столбцы генерируются, и только в последнем, который не просто столбец, а результат деления значений одного столбца на значения другого, данные не выводятся на DataGrid. При этом в DataSet они попадают, их можно получить оттуда (что я и сделал с помощью TextBlock'ов на форме). Как быть?

Под спойлером коды.

Запрос SQL:
Код: plsql
1.
SELECT VEDOMOST_OBIEMOV_RAB.NAME_RAB, NORMI_RABOT.NORM_PERSON, NORMI_RABOT.NORM_MECH, VEDOMOST_OBIEMOV_RAB.VOLUME_RAB/NORMI_RABOT.NORM_PERSON FROM VEDOMOST_OBIEMOV_RAB, NORMI_RABOT WHERE VEDOMOST_OBIEMOV_RAB.NAME_RAB=NORMI_RABOT.NAME_RAB



Разметка формы:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
<Window x:Class="StroyRegistr.Forms.MakeKARTA_OPR_RABWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MakeKARTA_OPR_RABWindow" Height="500" Width="800">
    <Window.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="..\Styles\Styles.xaml"/>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Window.Resources>
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="30"/>
            <RowDefinition Height="30"/>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="*"/>
            <RowDefinition Height="5"/>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*"/>
            <ColumnDefinition Width="5"/>
            <ColumnDefinition Width="100"/>
            <ColumnDefinition Width="180"/>
        </Grid.ColumnDefinitions>
        <DataGrid Grid.Row="0" Grid.RowSpan="7" Style="{StaticResource DataGridStyle}" Name="DG_Ved" ItemsSource="{Binding}" AutoGenerateColumns="True" SelectionChanged="DG_Ved_SelectionChanged">
        </DataGrid>
        <Button Grid.Row="1" Grid.Column="3" Grid.ColumnSpan="2" Name="BtnMakeKARTA" Content="Построить" Width="Auto" HorizontalAlignment="Center"/>
        <TextBlock Grid.Row="2" Grid.Column="2" Name="TxtRab" Background="Aqua" Text="Работа"/>
        <TextBlock Grid.Row="3" Grid.Column="2" Name="TxtPerson" Background="Aqua" Text="Норм. ч"/>
        <TextBlock Grid.Row="4" Grid.Column="2" Name="TxtMech" Background="Aqua" Text="Норм. маш"/>
        <TextBlock Grid.Row="5" Grid.Column="2" Name="TxtResult" Background="Aqua" Text="Результат"/>
        <TextBlock Grid.Row="2" Grid.Column="3" Name="TxtRabV" Background="Aqua" TextWrapping="Wrap"/>
        <TextBlock Grid.Row="3" Grid.Column="3" Name="TxtPersonV" Background="Aqua"/>
        <TextBlock Grid.Row="4" Grid.Column="3" Name="TxtMechV" Background="Aqua"/>
        <TextBlock Grid.Row="5" Grid.Column="3" Name="TxtResultV" Background="Aqua" TextWrapping="Wrap"/>
    </Grid>
</Window>




Стиль "DataGridStyle"
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
<Style TargetType="{x:Type DataGrid}" x:Key="DataGridStyle">
        <Setter Property="AutoGenerateColumns" Value="False"/>
        <Setter Property="Background" Value="#E5F1E4"/>
        <Setter Property="IsReadOnly" Value="True"/>
        <Setter Property="HeadersVisibility" Value="Column"/>
        <Setter Property="AlternationCount" Value="2"/>
        <Setter Property="GridLinesVisibility" Value="Vertical"/>
        <Setter Property="SelectionMode" Value="Extended"/>
        <Setter Property="VerticalGridLinesBrush" Value="#C6D7C5"/>
        <Setter Property="SelectionUnit" Value="FullRow"/>
    </Style>



Код метода SelectToBD:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
        public static DataTable SelectFromDB(string tableName, string query)
        {            
            if (StroyDataSet.Tables.Contains(tableName))
                StroyDataSet.Tables[tableName].Clear();
            
            OleDbDataAdapter myDataAdapter = new OleDbDataAdapter(query, connectionString);
            myDataAdapter.Fill(StroyDataSet, tableName);

            return StroyDataSet.Tables[tableName];

        }



Код вывода данных через DataGrid на форме:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
public MakeKARTA_OPR_RABWindow()
        {
            InitializeComponent();
            SelectFromBD();
        }

        private void SelectFromBD()
        {
            query = "SELECT VEDOMOST_OBIEMOV_RAB.NAME_RAB, NORMI_RABOT.NORM_PERSON, NORMI_RABOT.NORM_MECH, VEDOMOST_OBIEMOV_RAB.VOLUME_RAB/NORMI_RABOT.NORM_PERSON FROM VEDOMOST_OBIEMOV_RAB, NORMI_RABOT WHERE VEDOMOST_OBIEMOV_RAB.NAME_RAB=NORMI_RABOT.NAME_RAB";
            DG_Ved.DataContext = WorkTableClass.SelectFromDB(tableName, query);
        }

        private void DG_Ved_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (DG_Ved.SelectedIndex != -1)
            {
                TxtRabV.Text = WorkTableClass.StroyDataSet.Tables[tableName].DefaultView[DG_Ved.SelectedIndex][0].ToString();
                TxtPersonV.Text = WorkTableClass.StroyDataSet.Tables[tableName].DefaultView[DG_Ved.SelectedIndex][1].ToString();
                TxtMechV.Text = WorkTableClass.StroyDataSet.Tables[tableName].DefaultView[DG_Ved.SelectedIndex][2].ToString();
                TxtResultV.Text = WorkTableClass.StroyDataSet.Tables[tableName].DefaultView[DG_Ved.SelectedIndex][3].ToString();
            }
        }





В Apex'е тот же запрос выводит всё нормально

Ну и в приложении скриншот из формы, где видно, в чем проблема.
...
Рейтинг: 0 / 0
Выводятся не все данные в DataGrid
    #37942713
samart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проблема решилась использованием оператора "AS" в SQL-запросе. Видимо, при автогенерации столбцов в DataGrid'e формируется binding, который не понимает путь со слэшэм "/" (либо его вообще нельзя использовать в пути binding'а). Запрос можно сделать например таким:
Код: plsql
1.
SELECT VEDOMOST_OBIEMOV_RAB.NAME_RAB, NORMI_RABOT.NORM_PERSON, NORMI_RABOT.NORM_MECH, VEDOMOST_OBIEMOV_RAB.VOLUME_RAB/NORMI_RABOT.NORM_PERSON AS RESULT FROM VEDOMOST_OBIEMOV_RAB, NORMI_RABOT WHERE VEDOMOST_OBIEMOV_RAB.NAME_RAB=NORMI_RABOT.NAME_RAB
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Выводятся не все данные в DataGrid
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]