powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / DataGridView вопрос
7 сообщений из 7, страница 1 из 1
DataGridView вопрос
    #33770869
Kicel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
К примеру есть код, который нормально работает:


protected static void OnRowUpdated(object sender, OleDbRowUpdatedEventArgs args)
{
// Include a variable and a command to retrieve the identity value from the Access database.
int newID = 0;
OleDbCommand idCMD = new OleDbCommand("SELECT @@IDENTITY from products", myConn);
if (args.StatementType == StatementType.Insert)
{
// Retrieve the identity value and store it in the RowId column.
newID = (int)idCMD.ExecuteScalar();
args.Row["Rowid"] = newID;
//=======================

сюда

//=======================
}
}

Вопрос: какой код вставить в "сюда", который бы перемещал текущую строку грида на новую строку (со значением поля RowId=newID )? - Нигде не нашел подходящего примера :(
...
Рейтинг: 0 / 0
DataGridView вопрос
    #33771373
Kicel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
KicelК примеру есть код, который нормально работает:


protected static void OnRowUpdated(object sender, OleDbRowUpdatedEventArgs args)
{
// Include a variable and a command to retrieve the identity value from the Access database.
int newID = 0;
OleDbCommand idCMD = new OleDbCommand("SELECT @@IDENTITY from products", myConn);
if (args.StatementType == StatementType.Insert)
{
// Retrieve the identity value and store it in the RowId column.
newID = (int)idCMD.ExecuteScalar();
args.Row["Rowid"] = newID;
//=======================

сюда

//=======================
}
}

Вопрос: какой код вставить в "сюда", который бы перемещал текущую строку грида на новую строку (со значением поля RowId=newID )? - Нигде не нашел подходящего примера :(

Небольшое пояснение: есть форма с гридом, новые строки добавляются через другую форму. После ввода новой строки, текущей строкой грида остается строка, которая былы текущей до этого. А нужно чтобы текущей стала новая строка. Кто знает как сделать так?
...
Рейтинг: 0 / 0
DataGridView вопрос
    #33778633
Sir Pri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вообще-то для необходимого эффекта нужно изменить позицию привязки в объекте CurrencyManager для данной таблицы твоего DataSet. Если предположить что this - ссылка на форму то можно сделать например так:

this.BindingContext[DataSetName,"TableName"].Position={а сюда нужно вставить выражение, возвращающее индекс необходимой записи в таблице (здесь возможна огромная куча вариантов, выбери наиболее подходящий)}.

P.S. Процесс усложняется, если твой DataGrid привязан не напрямую к таблице, а через DataView, но и в этом случае выход есть.
...
Рейтинг: 0 / 0
DataGridView вопрос
    #33778639
Sir Pri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ещё одно - если у тебя на форме с DataGridом есть другие элементы управления, привязанные к той же таблице, то отображаемая ими запись тоже поменяется на заданную.
...
Рейтинг: 0 / 0
DataGridView вопрос
    #33778645
Sir Pri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
и this обязательно должен быть той формой на которой висит DataGrid.
...
Рейтинг: 0 / 0
DataGridView вопрос
    #33780248
Kicel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sir PriВообще-то для необходимого эффекта нужно изменить позицию привязки в объекте CurrencyManager для данной таблицы твоего DataSet. Если предположить что this - ссылка на форму то можно сделать например так:

this.BindingContext[DataSetName,"TableName"].Position={а сюда нужно вставить выражение, возвращающее индекс необходимой записи в таблице (здесь возможна огромная куча вариантов, выбери наиболее подходящий)}.

P.S. Процесс усложняется, если твой DataGrid привязан не напрямую к таблице, а через DataView, но и в этом случае выход есть.

Спасибо за ответ - все получилось.
Теперь другая проблема: есть форма с гридом, источник данных для него - dataset с таблицей, которая является результатом выборки (слияния 2-х таблиц), например: select a.no, a.data, b.name from doks a,company b where a.com_id=b.id.
Ничего особенного. Как теперь правильно организовать ввод нового документа -редактирование старого через другую форму? Т.е. интересует правильный технологический подход в похожих случаях. (Пробовал через relation, но как передать в другую форму позицию CurrencyManager-а (или еще чего другого) в подчинненой таблице - не получилось. Причем relation работает - проверено)
...
Рейтинг: 0 / 0
DataGridView вопрос
    #33781023
Sir Pri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Обычно в таких ситуациях я поступал так:
1) Создавал базовую форму, на которую вешал всю необходимую систему данных (Соединения,Адаптеры,ДатаСеты и т.д.)
2) Все формы своего проекта, которые работают с данными наследовал от базовой.
3) В стартовой форме загружал датасет данными их источника
4) Все остальные формы работающие с данными имеют конструкторы типа:
public StaForm(CoordDS MainDS)
{
this.MainDS = MainDS;
InitializeComponent();
}
и вызываются из стартовой так:
StaForm Form=new StaForm(MainDS);
5) Никто и ничто не мешает сделать так:
public StaForm(CoordDS MainDS, int CurrentRecordIndex)
{
this.MainDS = MainDS;
InitializeComponent();
this.BindingContext[MainDS.MyTable].Position=CurrentRecirdIndex;
}

Вот и всё.


P.S. Сомневаюсь насчёт правильности такого подхода, но работает - факт.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / DataGridView вопрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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