Skip to main content

Featured

[XrmToolBox] Use FetchXML Builder

FetchXML Installation : XrmToolBox 1. Open XrmToolBox And Find FetchXML Builder 2. Start FetchXML Builder 3. Click the fetch from node 사용은 Top 또는 Paging 둘 중 하나만 가능 Paging size : 한 페이지에 보여줄 레코드 개수 Dstinct : 페이지에 보여지는 레코드 중복 제거 No-lock : 테이블 lock 거는 것을 풀어줌 (조회 할 때 퍼블리시되지 않은 값도 들어올 수 있음) Page : 페이지 (미입력시 1 페이지) 4. Click entity form node 조회할 Entity Name을 선택 후, Select Attributes 클릭 조회할 Entity의 Attirbute를 선택하여 확인 link-entity 클릭 Relationship을 클릭하여 링크할 관계 선택 후 결과

ObjectListView Analysis - 1

For v2.9.1

셀 수정이 가능한 리스트 뷰가 필요하여 찾아보다가 발견하게 된 ObjectListView. Dll을 받아 바로 적용 해 보았다.


그리고 발견한 이슈. 이 이슈는 속성값인 ShowGroups가 True(기본값)로 되어 있을 때, 셀의 값을 변경할 때 발생한다. 밑의 사진과 같이 새 Row를 추가하고, Group으로 묶이는 Type을 동일하게 변경하였음에도 불구하고, 리스트뷰가 갱신을 하지 못하고 그대로 있는 현상이다.


이 현상에 대해서는 Show Group의 동작을 확인하여야 하지만, 파일에 저장될 List에 저장 후에 창을 닫고 다시 form을 생성하면 제대로 보이기 때문에 지금 바꿀 필요가 없으므로 넘어가도록 한다.

지금 제작하는 form은 다른 form에서 이 form을 열 때, 파일에 저장되있는 값을 메모리에 상주시켜놓은 list를 열 때마다 바인딩 해줘야 한다. 따라서 Add와 Sub에서 object를 추가 제거 할 때 list값도 같이 업데이트 해주거나, binding 된 object를 list로 매번 재바인딩 해주어야한다. 여러가지 방법도 있겠지만, 나는 전자를 택한다.

private void btnAdd_Click(object sender, EventArgs e)
{
    URLFilter urlfilter = new Function.URLFilter("","",Function.URLFilterMode.Sub);
    urlFitlers.Add(urlfilter);
    this.objectListView1.AddObject(urlfilter);
    this.objectListView1.EnsureModelVisible(urlfilter);     
}
private void btnSub_Click(object sender, EventArgs e)
{
    try
    {
        urlFitlers.RemoveAt(this.objectListView1.SelectedIndex);
        this.objectListView1.RemoveObjects(this.objectListView1.SelectedObjects);
    }catch(ArgumentOutOfRangeException)
    {
        MessageBox.Show("Select Record for Remove");
    }
}

그러면 정상적으로 작동한다.
수정의 경우에는 list가 listview에 바인딩 되어 있어, 수정사항은 바로 적용이된다. 값 변경뿐만 아니라 함수호출 등을 해야할 경우에는 document 51번을 따라 INotifyPropertyChanged를 사용하면 된다.

Comments

Popular Posts