|
|
|
DataGridView вопрос
|
|||
|---|---|---|---|
|
#18+
К примеру есть код, который нормально работает: 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 )? - Нигде не нашел подходящего примера :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2006, 09:55 |
|
||
|
DataGridView вопрос
|
|||
|---|---|---|---|
|
#18+
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 )? - Нигде не нашел подходящего примера :( Небольшое пояснение: есть форма с гридом, новые строки добавляются через другую форму. После ввода новой строки, текущей строкой грида остается строка, которая былы текущей до этого. А нужно чтобы текущей стала новая строка. Кто знает как сделать так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2006, 03:23 |
|
||
|
DataGridView вопрос
|
|||
|---|---|---|---|
|
#18+
Вообще-то для необходимого эффекта нужно изменить позицию привязки в объекте CurrencyManager для данной таблицы твоего DataSet. Если предположить что this - ссылка на форму то можно сделать например так: this.BindingContext[DataSetName,"TableName"].Position={а сюда нужно вставить выражение, возвращающее индекс необходимой записи в таблице (здесь возможна огромная куча вариантов, выбери наиболее подходящий)}. P.S. Процесс усложняется, если твой DataGrid привязан не напрямую к таблице, а через DataView, но и в этом случае выход есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2006, 18:14 |
|
||
|
DataGridView вопрос
|
|||
|---|---|---|---|
|
#18+
Ещё одно - если у тебя на форме с DataGridом есть другие элементы управления, привязанные к той же таблице, то отображаемая ими запись тоже поменяется на заданную. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2006, 18:16 |
|
||
|
DataGridView вопрос
|
|||
|---|---|---|---|
|
#18+
и this обязательно должен быть той формой на которой висит DataGrid. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2006, 18:17 |
|
||
|
DataGridView вопрос
|
|||
|---|---|---|---|
|
#18+
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 работает - проверено) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2006, 12:37 |
|
||
|
DataGridView вопрос
|
|||
|---|---|---|---|
|
#18+
Обычно в таких ситуациях я поступал так: 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. Сомневаюсь насчёт правильности такого подхода, но работает - факт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2006, 15:51 |
|
||
|
|

start [/forum/topic.php?fid=17&msg=33778639&tid=1353293]: |
0ms |
get settings: |
6ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
66ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
29ms |
get tp. blocked users: |
1ms |
| others: | 202ms |
| total: | 336ms |

| 0 / 0 |
