Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM Новый топик    Ответить
 Динамическая подстановка вычисленных значений T-SQL табличной функции в DataSet на C#  [new]
gri.green
Member

Откуда:
Сообщений: 5
Есть проблема. Мастером MSVS 2008 настроил набор данных из SQL Server. В наборе данных есть и таблицы, и представления, и функции. Мастером же сделал DataSet на эти данные. На форме сделал несколько DataGridView контролов. Сделал тип одной из колонок DataGridViewComboBoxColumn. Данными для подстановки требуется сделать результат выполнения загруженной T-SQL табличной функции, которая в качестве параметра принимает значение ячейки текущего строки другого DataGridView. Пытаюсь выполнить подстановку в момент события CellEnter контрола, в котроый нужно подставить:
        private void dataGridViewUZTRepPipe_CellEnter(object sender, DataGridViewCellEventArgs e)
        {
            DataGridView grid = (DataGridView)sender;
            if (grid.CurrentCell.OwningColumn == idEmpCertDataGridViewTextBoxColumn)
            {
                DataRowView t = (DataRowView)fKPipeLineDrowingDeviceBindingSource.Current;
                if (t.Row[idDataGridViewTextBoxColumn3.DataPropertyName] is int)
                {
                    int idDraw = (int)t.Row[idDataGridViewTextBoxColumn3.DataPropertyName];

                    RLDDataSet.cert_from_drawDataTable dt = cert_from_drawTableAdapter.GetData(idDraw);
                    BindingSource cert_from_draw2BindingSource = new BindingSource();
                    cert_from_draw2BindingSource.DataSource = cert_from_drawTableAdapter.GetData(idDraw);
                    cert_from_draw2BindingSource.DataMember = "cert_from_draw"; // cert_from_draw - название
                    DataGridViewComboBoxColumn column =
                        (DataGridViewComboBoxColumn)grid.Columns[idEmpCertDataGridViewTextBoxColumn.DataPropertyName];
                    column.DataSource = cert_from_draw2BindingSource;
                    column.DisplayMember = "idFIO";
                    column.ValueMember = "id";
                }
            }
        }
Получаю ошибку --> Свойство "cert_from_draw" для DataMember не найдено в DataSource. , хотя cert_from_draw2BindingSource.DataSource.TableName = "cert_from_draw".
Подскажите пожалуйста, в чем загвоздка?
Есть ли другой способ такой динамической подстановки?
15 май 11, 12:22    [10654170]     Ответить | Цитировать Сообщить модератору
 Re: Динамическая подстановка вычисленных значений T-SQL табличной функции в DataSet на C#  [new]
gri.green
Member

Откуда:
Сообщений: 5
Прошу прощения, не в ту ветку поместил. Надо наверно в ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM

Модератор: Тема перенесена из форума "ASP.NET".


Сообщение было отредактировано: 15 май 11, 12:29
15 май 11, 12:25    [10654173]     Ответить | Цитировать Сообщить модератору
 Re: Динамическая подстановка вычисленных значений T-SQL табличной функции в DataSet на C#  [new]
gri.green
Member

Откуда:
Сообщений: 5
Да, ошибок было много. Помогло использовать существующий, а не зановосоздаваемый BindingSourse и не менять его свойство DataMember, которое и было равно "cert_from_draw" (шаманство ;) ) Правильно вот так:
 
        private void dataGridViewUZTRepPipe_CellEnter(object sender, DataGridViewCellEventArgs e)
        {
            DataGridView grid = (DataGridView)sender;
            if (grid.CurrentCell.OwningColumn == idEmpCertDataGridViewTextBoxColumn)
            {
                DataRowView t = (DataRowView)fKPipeLineDrowingDeviceBindingSource.Current;
                if (t.Row[idDataGridViewTextBoxColumn3.DataPropertyName] is int)
                {
                    int idDraw = (int)t.Row[idDataGridViewTextBoxColumn3.DataPropertyName];

                    RLDDataSet.cert_from_drawDataTable dt = cert_from_drawTableAdapter.GetData(idDraw);
                    certfromdrawBindingSource.DataSource = dt;
                    DataGridViewComboBoxColumn column =
                        (DataGridViewComboBoxColumn)grid.Columns[grid.Columns.IndexOf(idEmpCertDataGridViewTextBoxColumn)];
                    column.DataSource = certfromdrawBindingSource;
                    column.DisplayMember = "idFIO";
                    column.ValueMember = "id";
                    column.DataPropertyName = "idEmpCert";
                }
            }    
        }

Впрочем вопрос о других способах динамической подстановки остается открытым. Есть предложения?
15 май 11, 15:38    [10654510]     Ответить | Цитировать Сообщить модератору
Все форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM Ответить