Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Обновление данных в DataGrid / 3 сообщений из 3, страница 1 из 1
02.06.2004, 18:52
    #32545436
ignaci
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление данных в DataGrid
Возникла передо мной такая проблема :
Есть у меня ArrayList, наполняю я его объектами своего пользовательского класса, и отображаю этот ArrayList в DataGrid. Но при добавлении нового объета в набор DataGrid не хочет отображать изменения в коллекции (не выводит новую строчку с новым объктом). Я не знаю как заставить его перечитать данные в колекции и обновить выводимую информацию. Неужели есть только этот выход

DataGrid->DataSource=0; // обнилить DataSource
DataGrid->DataSource=myArrayList;

Но это же не хорошо. Как сделать это нормально, ну типа "Reload" что-ли?
...
Рейтинг: 0 / 0
03.06.2004, 01:42
    #32545651
Sergey Pikhulya
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление данных в DataGrid
...
Рейтинг: 0 / 0
03.06.2004, 10:45
    #32546024
ignaci
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление данных в DataGrid
>Как сделать, чтобы изменения в коллекции (добавление, >удаление объектов) сразу отображалось в Гриде, подобно тому >как это происходит с DataTable?

Чтобы эта (и многие другие) возможность была доступна - коллекция должна реализовать интерфейс IBindingList. При установке data source DataGrid проверяет реализует-ли источник данных этот интерфейс и если да то подписывается на его событие ListChanged (конечно если коллекция поддерживает оповещение при изменении своего состояния, о чем говорит свойство SupportsChangeNotification этого интерфейса)

Sergey Pikhulya а не подскажете ли какие методы этого IBindingList надо определять р реалезующем его классе. Я сделал для начала так, и у меня компилятор выдает ошибку:
//------------------
c:\Documents and Settings\Администратор.SOFT23\Мои документы\Visual Studio Projects\ListView\Form1.cpp(10): error C2259: 'MyList::ArrayList' : cannot instantiate abstract class
//------------------
namespace MyList
{
using namespace System::ComponentModel;
public __gc class ArrayList : public System::Collections::ArrayList,
public System::ComponentModel::IBindingList
{
public:
ArrayList(void);
void AddIndex(PropertyDescriptor* property){}
Object* AddNew(){return 0;}
void ApplySort( PropertyDescriptor* property, ListSortDirection direction){}
int Find( PropertyDescriptor* property, Object* key){return 0;}
void RemoveIndex(PropertyDescriptor* property){}
void RemoveSort(){}
__property bool get_AllowEdit(){return true;}
__property bool get_AllowNew(){return true;}
__property bool get_AllowRemove(){return true;}
__property bool get_IsSorted(){return true;}
__property ListSortDirection get_SortDirection(){return ListSortDirection::Ascending;}
__property PropertyDescriptor* get_SortProperty(){return 0;}
__property bool get_SupportsChangeNotification(){return true;}
__property bool get_SupportsSearching(){return true;}
__property bool get_SupportsSorting(){return true;}

};
}
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Обновление данных в DataGrid / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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