DevExpress XtraGrid 제품군을 사용하여 개발 중에 때때로 팝업되는 작업을 해결하는 방법을 궁금합니다. 비즈니스 로직 계층에서 오는 모델 클래스 표현이이 개 클래스를 감안할 때 :복잡하고 중첩 된 객체 모델에 대한 XtraGrid 바인딩
public class Customer
{
public Int32 CustomerId { get; set; }
public String Name { get; set; }
public String Address { get; set; }
public List<Order> Orders { get; set; }
}
public class Order
{
public Int32 OrderId { get; set; }
public String ItemCode { get; set; }
public Int32 Quantity { get; set; }
public Decimal Price { get; set; }
public DateTime Date { get; set; }
}
내가 편집을 허용하는 XtraGrid를 표시하는 간단한 윈도우를 생성하고 싶습니다를/ 때때로 나는이 경우에 해당 고객 및 중첩 된 주문 목록 추가/제거 그렇게하기 위해 GridControl과 GridView 컨트롤을 사용하여 AllowAddRow 및 AllowDeleteRow 속성 == true로 간단한 폼을 만들었습니다. 내 목록의 내용을 보여줍니다
//List of my customers
private List<Customer> _customers;
public Form1()
{
//Initialize UI components
InitializeComponent();
//Call the provider in order to get customers
CustomerProvider cp = new CustomerProvider();
_customers = cp.GetCustomers();
//Initialize bindingSource
BindingSource bs = new BindingSource();
bs.DataSource = _customers;
//Set GridControl's dataSource
gridControl1.DataSource = bs;
}
이제 내가있어 아름다운 GridControl : 그런 다음, Form1 클래스에서 나는 다음과 같은 완료했습니다.
하지만 지금은 여기가 ... 문제 야 내가 어떻게 추가하거나 행을 삭제할 수 있습니까? Infact는 :
내가 행에 포커스를 설정하고 난 누르면 키를, 그렇지 않은 작업을 수행 "삭제".
새 행을 추가하려고하면 포커스가 없어지면 제대로 사라집니다.
분명히 나는 뭔가를 놓치고 있습니다. 불행히도 나는 DevExpress 문서가 이런 종류의 논쟁과 모범 사례에 대해 (자신의 의견으로는) 매우 혼란 스럽다는 것을 발견했다. 그래서 나는 나의 목표에 도달 할 수 없다.
누군가 나를 도울 수 있습니까?
추신. This은 내 샘플의 .csproj에 대한 하이퍼 링크입니다.
감사합니다. 나는 단순한 목록 클래스 대신에 bindingList를 사용하여 시도해 보았다.이제 마스터 행 (최근 예제의 고객 행)을 추가 할 수 있지만 세부 사항은 해결되지 않았습니다 (최근 예제의 행 순서). 분명히 세부 gridview는 목록이고 BindingList가 아닌 인 "Orders"속성에 직접 바인딩됩니다. –
GiveEmTheBoot
List에서 BindingList로 "Orders"속성의 유형을 변경하지 않고 어떻게 해결할 수 있습니까? 내 모델 계층에서 바인딩 지향 유형을 사용하고 싶지 않고 또한 너무 많아서 모든 비즈니스 논리 모델 컨테이너 어셈블리를 다시 컴파일하지 않으려 고합니다 ... 내 해결 방법이나 포장 방법이 있습니까? 모델을 완전히 편집 가능하게 만들고 gridcontrol의 데이터 소스로 사용합니까? 감사! – GiveEmTheBoot
내가 아는 누구도. 가장 높은 수준에서 옵션은 1) IBindingList 인터페이스를 구현하는 컨테이너를 사용하거나 2) 데이터베이스에 컨트롤을 바인딩하거나 3) DataSet 클래스를 통해 XML 데이터에 바인딩합니다. 자세한 내용은 http://documentation.devexpress.com/#WindowsForms/CustomDocument2395를 참조하십시오. – kenrogers