Telerik의 RadGridView를 사용하고 있는데 DataSource로 바인딩한 정보를 동적으로 변경하면 화면에 바로 업데이트 되지 않는다.
가장 기본적인 방법은 DataSource = null로 초기화를 하고 다시 바인딩을 하는 것이다.
이렇게 하면 당연히 동적으로 변경된 데이터가 화면에 보일 것이다. 하지만 이렇게 하면 화면이 깜박거리거나 데이터가 많으면 표시되는 속도가 느린 문제가 있다.
WPF나 Winform 모두 처리하는 방법은 같다.
검색을 해보니 아래와 같은 정보를 찾을 수 있었다.
- The collection that you will bind to RadGridView should implement IBindingList or IBindingListView interfaces. This will allow RadGridView to get notified about insert and delete operations of records.
- Your business objects should implement INotifyPropertyChanged interface (.NET 2.0). This will allow RadGridView to reflect changes which occur to the properties of the business objects.
방법은 아주 간단했다.
Binding 하는 클래스의 INotifyPropertyChanged interface를 추가하는 것이다.
예제 소스를 보면 아래와 같다.
public class Student : System.ComponentModel.INotifyPropertyChanged
{
int m_id;
string m_name;
string m_grade;
public event PropertyChangedEventHandler PropertyChanged;
public Student(int m_id, string m_name, string m_grade)
{
this.m_id = m_id;
this.m_name = m_name;
this.m_grade = m_grade;
}
public int Id
{
get
{
return m_id;
}
set
{
if (this.m_id != value)
{
this.m_id = value;
OnPropertyChanged("Id");
}
}
}
public string Name
{
get
{
return m_name;
}
set
{
if (this.m_name != value)
{
this.m_name = value;
OnPropertyChanged("Name");
}
}
}
public string Grade
{
get
{
return m_grade;
}
set
{
if (this.m_grade != value)
{
this.m_grade = value;
OnPropertyChanged("Grade");
}
}
}
protected virtual void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}
위와 같은 방식으로 Binding 하는 Class의 public 변수를 Set 할 때 OnPropertyChanged 처리를 하면 이벤트가 발생하고 GridView의 Column이 업데이트가 된다.
'.NET' 카테고리의 다른 글
Telerik RadGridView drag and drop 할 때 row index 확인 방법 (0) | 2022.06.27 |
---|---|
Telerik GridView Drag and Drop Example (0) | 2022.06.03 |
C# winform 프로젝트에서 "디자이너 보기"가 사라지는 문제 해결 (2) | 2022.05.18 |
Telerik Winform GridView Scroll 표시 세팅 방법 (0) | 2022.04.14 |
C# WinFrom에서 Telerik의 RadSplitContainer사용하는 방법 (0) | 2022.04.12 |