Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > WPF, UWP, WinRT, XAML
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.04.2012, 15:49   #1
Mixim
Форумчанин
 
Регистрация: 29.10.2009
Сообщений: 259
Вопрос XAML: выгрузка полей из таблицы БД, имена которых определены в Properties

Необходимо на языке C# с использованием WPF реализовать клиент для базы данных. В этой базе есть несколько таблиц("Entity_1", "Entity_2",...), каждая из которых содержит имена полей в формате "Field_n", где n-номер поля(взял обобщенный формат БД). Помещаю на форму объект DataGrid, описание которого в XAML выглядит следующим образом:
Код:
        
    <Window.Resources>
        <properties:Settings x:Key="ProgramSettings" />
    </Window.Resources>

<DataGrid AutoGenerateColumns="False" Height="200" HorizontalAlignment="Left" Name="db_dataGrid" VerticalAlignment="Top" Width="503" >
            <DataGrid.Columns>
                <DataGridTextColumn Header="Поле_1" Width="Auto" Binding="{Binding Path='[Field_1]'}"/>
                <DataGridTextColumn Header="Поле_2"  Binding="{Binding Path='[Field_2]'}"/>
                <DataGridTextColumn Header="Поле_3" Binding="{Binding Source={StaticResource ProgramSettings}, Path=Default.Field3, Mode=OneWay}" />
            </DataGrid.Columns>
        </DataGrid>
<!--Обратите особое внимание на определение последнего столбца-->
Для выгрузки данных в этот DataGrid использую код:
Код:
        protected System.Collections.IEnumerable FillDataGrid(SqlConnection CurrentSqlConnection, String Query)
        {
            System.Data.DataTable dataTable = new System.Data.DataTable();
                try
                {
                    using (SqlDataAdapter adapter = new SqlDataAdapter(Query, CurrentSqlConnection))
                    {
                        CurrentSqlConnection.Open();
                        adapter.Fill(dataTable);

                        using (System.Data.DataSet dataSet = new System.Data.DataSet())
                        {
                            adapter.Fill(dataSet);
                            dataTable = dataSet.Tables[0];
                        }
                    }
                }
                finally
                {
                    if (CurrentSqlConnection.State == System.Data.ConnectionState.Open)
                    {
                        CurrentSqlConnection.Close();
                    }

                }

                return dataTable.DefaultView;
        }
Теперь пишу обработчик события Window_Initialized:
Код:
        private void Window_Initialized(object sender, EventArgs e)
        {
            String connectionString = "Data Source='(local)';Initial Catalog=DB_1;User Id=;Password=;Integrated Security=SSPI;";
            using (SqlConnection mySQL = new SqlConnection(connectionString))
            {
                db_dataGrid.ItemsSource = FillDataGrid(mySQL, "SELECT * FROM [Entity1]");
            }
        }
Столбцы Field_1 и Field_2 отлично загружаются, а с Filed_3 какая-то проблема: в нем отображается текст параметра проекта Field3, т.е. "[Field_3]", но не значение данного поля в БД. Пересмотрел кучу разных сайтов по программированию, но решение этой проблемы так и не было найдено.
Подскажите пожалуйста, что не так с моей привязкой данных, как сделать так, чтобы в третьем столбце отображалось значение из БД?
Объясню зачем так "усложнять", почему нельзя третий столбец задать точно также как первый, второй: предполагается, что в последующем все поля таблиц БД приобретут "человеческий вид"(их имя будет совпадать с функциональным назначением), а структура БД останется прежней и чтобы потом не перестраивать проект, хочу предоставить пользователю возможность менять значения параметров Field_1, Field_2, Field_3, ..., Field_n в параметрах приложения.
Из всех классических книг, посвященных программированию, ненавижу всего одну - русский перевод книги Роберта Седжвика-"Фундаментальные алгоритмы C++". Предпочитаю читать её в оригинале.

Последний раз редактировалось Mixim; 05.04.2012 в 15:52.
Mixim вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Access ограничить значение поля таблицы значениями полей другой таблицы Сергей089 Microsoft Office Access 10 08.12.2010 02:22
Добавить имена полей таблицы в Combobox Liones Общие вопросы Delphi 2 12.07.2010 12:02
Выгрузка вычисляемых полей Table в Excel Nika03 БД в Delphi 2 20.05.2010 14:46
Что делать, если имена полей динамические? Rock'n'rolla Работа с сетью в Delphi 1 25.01.2010 14:56
DOS команда для удаления всех файлов, имена которых содержат цифры Samopal Операционные системы общие вопросы 1 23.12.2008 21:12