none
Странность при создании связки DataGrid - SQL средствами студии RRS feed

  • Вопрос

  • Здравствуйте, возникла такая проблема. В студии 2010 Ultimate (C# .NET 4.0, WPF) создаю форму и набор данных. Кидаю набор данных на форму (по идее должно создаться DataGrid, если верить MSDN), но в итоге студия ругается на такие строчки (сам элемент, на который ругается, отделён с двух сторон троекратным символом подчёркивания):

    Title="Library Manager v1.32.496 [название временное]" Height="350" Width="525" ___xmlns:my="clr-namespace:Library_Manager;assembly=Library Manager"___ Loaded="Window_Loaded">
    
     <Window.Resources>
            <___my:HellDBDataSet1___ x:Key="hellDBDataSet1" />
            <CollectionViewSource x:Key="testViewSource" Source="{Binding Path=test, Source={StaticResource hellDBDataSet1}}" />
        </Window.Resources>
    

    Зараннее благодарен (:


    MSDN AA User

    • Изменено asdfxcbneftyherwe 18 января 2012 г. 21:19
    • Перемещено Abolmasov Dmitry 6 февраля 2012 г. 11:02 (От:Работа в среде Visual Studio)
    18 января 2012 г. 21:17

Ответы

  • > получает из базы таблицу с двумя столбцами (num и value). Как сделать так, чтобы данные из столбца num базы данных выводились в столбец num грида соответственно?  
       
      
    <DataGrid ItemsSource="{Binding}" ColumnWidth="*" 
                AutoGenerateColumns="False">
        <DataGrid.Columns>
            <DataGridTextColumn Header="Номер" Binding="{Binding num}" />
            <DataGridTextColumn Header="Значение" Binding="{Binding value}" />
        </DataGrid.Columns>
    </DataGrid>
    
    ...
    public MainWindow()
    {
        InitializeComponent();
    
        var dc = new System.Data.Linq.DataContext(....);
        this.DataContext = dc.GetTable<test>();
    
        // сохранить данные при закрытии окна
        this.Closing += (s, e) => dс.SubmitChanges();
    }
      

    • Изменено Malobukv 19 января 2012 г. 19:15
    • Помечено в качестве ответа asdfxcbneftyherwe 23 января 2012 г. 20:01
    19 января 2012 г. 18:54

Все ответы

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

    У вас установлен Service Pack 1 для Visual Studio 2010?

    Источником данных для DataSource является база данных? При создание DataSource выбирали DataSet или Entity Data Model? Также на сколько сложна таблица, есть ли связанные таблицы?

    После переноса таблицы на форму сам грид создается или создание прерывается? Если создается и в нем расписаны колонки и заданы биндинги, а в Window_Loaded событии сгенерировался код заполнения адаптера, то можете попробовать просто стереть эти подчеркивания и посмотреть скомпилируется ли код.


    Для связи [mail]
    19 января 2012 г. 10:20
  • > В студии 2010 Ultimate (C# .NET 4.0, WPF) создаю форму и набор данных. Кидаю набор данных на форму (по идее должно создаться DataGrid, если верить MSDN), но в итоге студия ругается
     
     
    возможно, что это какой-то баг. попробуйте тоже самое сделать в Expression Blend.
    (из моего опыта: чтобы не портить себе нервы, визуальные редакторы лучше не использовать).

     

    19 января 2012 г. 10:43
  • >У вас установлен Service Pack 1 для Visual Studio 2010?

    Источником данных для DataSource является база данных? При создание DataSource выбирали DataSet или Entity Data Model? Также на сколько сложна таблица, есть ли связанные таблицы?

    После переноса таблицы на форму сам грид создается или создание прерывается? Если создается и в нем расписаны колонки и заданы биндинги, а в Window_Loaded событии сгенерировался код заполнения адаптера, то можете попробовать просто стереть эти подчеркивания и посмотреть скомпилируется ли код.

    1) SP1 стоял

    2) Источник данных - база данных на SQL Express, при создании был выбран DataSet. Таблица простая как топор, один столбец - первичный ключ, генерирующийся автоматически (число тип инт, шаг увеличения - 1), вторая таблица - произвольная строка nvarchar(MAX).

    3) Грид успешно создаётся, создаётся событие, код заполняется. Всё идеально, ругается только на эти две строчки (подчёркивания я поставил сам, чтобы выделить проблемные места) в XAML, и как следствие, не компилируется.

     

    >(из моего опыта: чтобы не портить себе нервы, визуальные редакторы лучше не использовать).

    Откатился на Express версию, теперь вопрос в другом.

    есть переменная test типа Table<> кажется, она получает из базы таблицу с двумя столбцами (num и value). Как сделать так, чтобы данные из столбца num базы данных выводились в столбец num грида соответственно? this.Data.DataContext не совсем то, что нужно, потому что оно выводит всю таблицу, а мне нужно вывести лишь часть получаемых столбцов. (столбцы разные, в зависимости от наступившего события (нажатие кнопки)).


    MSDN AA User
    19 января 2012 г. 17:00
  • > получает из базы таблицу с двумя столбцами (num и value). Как сделать так, чтобы данные из столбца num базы данных выводились в столбец num грида соответственно?  
       
      
    <DataGrid ItemsSource="{Binding}" ColumnWidth="*" 
                AutoGenerateColumns="False">
        <DataGrid.Columns>
            <DataGridTextColumn Header="Номер" Binding="{Binding num}" />
            <DataGridTextColumn Header="Значение" Binding="{Binding value}" />
        </DataGrid.Columns>
    </DataGrid>
    
    ...
    public MainWindow()
    {
        InitializeComponent();
    
        var dc = new System.Data.Linq.DataContext(....);
        this.DataContext = dc.GetTable<test>();
    
        // сохранить данные при закрытии окна
        this.Closing += (s, e) => dс.SubmitChanges();
    }
      

    • Изменено Malobukv 19 января 2012 г. 19:15
    • Помечено в качестве ответа asdfxcbneftyherwe 23 января 2012 г. 20:01
    19 января 2012 г. 18:54