MONO + Dataview, DataGrid (вылеты из программы)

Модератор: Модераторы разделов

Demonsh
Сообщения: 22
ОС: OpenSuse 11

MONO + Dataview, DataGrid

Сообщение Demonsh »

Писал программу на С#, все вроде нормально работает под моно. Но при использовании DataView вылетает (index out of range). Вылет происходит похоже в момент любого генерирования обытия Датавью. т.е. при нажатии кнопки, клике мышки и т.д. Компонент DataView берется из .Net 2.0. На офф сайте написано что 2.0 еще не доконца поддерживается - ну думаю ладно. Переписываю прогу полностью, использую компоненты только от .Net 1.1 - Вместо DataView использую DataGrid. Хоть не так удобно, но хоть как-то.
Если сделать только одну таблицу, программа работает вроде норм. Но задача стоит отобразить 3 связаных таблицы. Т.е. При выборе записи в первой - во второй отображались связанные данные. При выборе во второй - в третьей отображались связанные данные. Связь делаю как:

Код: Выделить всё

dataSet.Relations.Add("Relation_Table1Table2", dataSet.Tables["Table1"].Columns["id_t1"], dataSet.Tables["Table2"].Columns["id_t1"]);
dataSet.Relations.Add("Relation_Table2Table3", dataSet.Tables["Table2"].Columns["id_t2"], dataSet.Tables["Table3"].Columns["id_t2"]);
dataView1.Table = dataSet.Tables["Table1"];
dataGridHosts.DataSource = dataView1;
dataGridInterf.DataSource = dataView1;
dataGridVlans.DataSource = dataView1;
dataGridInterf.DataMember = "Relation_Table1Table2";
dataGridVlans.DataMember = "Relation_Table1Table2.Relation_Table2Table3";


если делать только один датагрид, то все работает. Если поцепить три сразу - вылет и таже ошибка! При этом вылетает только если клацать по первому датагриду. взаимосвязь не обнаружил. Также заметил что при создании связанных таблиц с-во в датагриде "AllowNavigation" не работает, всегда стоит в True.

Пробовал иоследний билд MONO а также девелоперский снапшот. разницы нет.

Может кто сталкивался с подобным случаем и подскажет решение?

п.с. конечно склоняюсь к тому что писать кросс-платформенные приложения на моно не самый лучший вариант, но поскольку язык С# знаю лучше всего, хотелось обойтись наименьшей кровью.
Спасибо сказали:
Upliner
Сообщения: 67
ОС: openSUSE 11 / Debian Lenny

Re: MONO + Dataview, DataGrid

Сообщение Upliner »

Компоненты семейства System.Data порой нестабильно работают даже на "фирменном" Microsoft .NET . Особенно, когда с БД работает сразу много пользователей, тормоза и глюки становятся невыносимыми, что заставило нас отказаться от System.Data во многих случаях в пользу собственных компонентов. От Mono я большего и не ожидал, тут выход я вижу один -- копаться в исходниках System.Data. Благо, платформа предоставляет огромные возможности для трассировки исключений -- просто ловите исключение и смотрите StackTrace.
От Кузбаса и до Затулинки, от вершин до глубиннейших руд
Анархисты Сибирской Республики нас к предельной свободе ведут
Спасибо сказали: