Страница 1 из 1

Проблема со связью

Добавлено: 26 июн 2008, 13:06
NSG
Есть следующая проблема. Использует UserData в качестве источника данных. В качестве колонок - свои объекты у которых перекрыты методы сравнения Equal и CompareTo. Также перекрыты GetHash() и ToString(). Причем есть такой случай, когда в качестве колонок для связи между Master-Detail DataBand задаются как раз наши объекты. Все работает правильно, кроме одного случая, А именно, когда объекты НЕ равны, но при этом obj.ToString() возвращает одно и то же значение. (Например, если объекты - два разных человека с одинаковой фамилией). При этом, Detail данные подцепляются только к однома Master DataBand, а к другому нет, хотя детальные данные есть для обоих. Стоит поменять одному из объектов значение, возвращаемое ToString() - все становится нормально.

Покопавшись в исходниках, нашел, что неправильный результат приходит из метода
detailRows = table.detailRows[table.Position].GetChildRows(relationName);
При этом, во время выполнения данного метода отлично вызывается перекрытый у нашего объекта метод CompareTo и отрабатывает правильно, возвращая в качестве результата сравнения, что данные не равны.

Подскажите, пожалуйста, где копать!

Проблема со связью

Добавлено: 26 июн 2008, 20:07
Vital
Здравствуйте,

дело в том, что метод GetChildRows это метод ado.net класса DataRow. В этой строке возвращается список строк для связи. Его конечно можно заменить но вопрос чем?

Спасибо.

Проблема со связью

Добавлено: 26 июн 2008, 20:18
NSG
Да это понятно. Я просто надеялся, что Вы знаете как он работает и что-нибудь посоветуете. :biggrin:
Странно это. Вроде и метод ToString() не вызывается.

Будем искать... Спасибо.