달력

4

« 2024/4 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
2012. 9. 21. 09:30

Grid Layout Save & Load Study/DevExpress2012. 9. 21. 09:30

이번에는 Grid Layout Save Load에 대해서 알아보겠습니다.

이 기능은 DevExpress Component에서 지원하는 기능을 YJIT Framework Grid Properties로 추가해서 쉽게 사용할 수 있도록 만들었습니다.

 

먼저 사용방법을 보도록 하겠습니다.

 

우선 Grid SaveLayout properties True로 설정합니다.

 

이것으로 설정은 끝입니다.

 

이렇게 하고 컴파일 한 후 프로그램을 실행하면 겉으로 보기에는 아무런 변화가 없지만, Grid가 포함된 화면을 닫을 때, 현재 Grid에 대한 Layout을 저장합니다.

저장되는 경로는 프로그램 실행파일이 있는 경로에 GridLayout이라는 Folder를 생성하고 그 안에 2개의 파일을 생성합니다.

생성되는 두 개의 파일 명은 다음과 같습니다.

1.     Grid가 포함된 Form Name + 그리드 View 이름 + ‘_ORIGIN’ : 처음에 디자인된 Grid Layout File

2.     Grid가 포함된 Form Name + 그리드 View 이름 : 최종 저장된 Grid Layout File

GridLayout Folder

이런식으로 파일이 생성됩니다.

 

Grid Layout을 불러오는 시점은 Grid OnCreateControl( ) 함수이고, 최종 Layout을 저장하는 시점은 Dispose( ) 함수입니다.

 

아래 그림은 Grid변경의 예시입니다.

 

최초 Grid의 모습입니다.

 

최초 Grid에서 첫번째 컬럼을 Hide 하고 Type Contract Date를 앞으로 옮기고, Contract Date Sort를 지정하고 BranchGroup을 걸고 확인한 결과 이 상태가 그대로 저장되었습니다.


 

최초 xml 파일과 저장된 xml 파일은 맨 마지막에 따로 적도록 하겠습니다. 참고하십시오.

  

이 방법의 단점은 개발자가 새로 Grid를 수정해서 배포했을 경우, 사용자는 계속 마지막에 저장된 형태의 Grid Layout으로만 보인다는 단점이 있습니다.

그래서 최초 배포시에 디자인된 Layout으로 되돌리는 기능이 필요합니다.

처음 디자인된 Grid Layout으로 되돌리려면 Grid Header에서 마우스 오른쪽 클릭을 합니다.

그러면 아래 그림과 같은 Popup Menu가 뜨는데 맨 아래 보면 Layout Reset이라는 메뉴가 추가로 생성되어 있음을 볼 수 있습니다.


 

Layout Reset을 누르면 확인 창이 뜨고

 

OK를 누르면 원래의 Layout으로 돌아갑니다. 이전에 저장된 Grid Layout으로 돌아갈 수 없습니다.

 이 방법은 xml 파일로 Client에 저장되는 방식이기 때문에 사용자가 아니라 컴퓨터마다 다른 Layout이 나올 수 있습니다.

이것을 사용자별로 Layout을 적용하도록 하려면 xml 파일이 아니라 DataBase xml 파일 내용을 저장하고 불러오는 방식을 사용해야 할 것입니다.

하지만 아직은 검증도 안된 상태이고 그렇게 하면 속도문제도 있을 것 같아서 현재는 Client에 저장하는 방식만을 사용하고 있습니다.

 

이상으로 Grid Layout Save & Load를 알아보았습니다.

 

참고 링크 : http://documentation.devexpress.com/#WindowsForms/CustomDocument2404

 

참고로 DevExpress에서는 위와 같은 방식으로 Grid 뿐만 아니라 Form 자체의 Layout을 저장하는 방법도 제공하고 있습니다.

 

별첨. Grid Layout xml 파일 내용.

1. TmsVehChassisGV1_ORIGIN

<XtraSerializer version="1.0" application="View">

  <property name="#LayoutVersion" />

  <property name="ActiveFilterEnabled">true</property>

  <property name="Columns" iskey="true" value="10">

    <property name="Item1" isnull="true" iskey="true">

      <property name="Visible">true</property>

      <property name="VisibleIndex">0</property>

      <property name="Name">GridColumn1</property>

    </property>

    <property name="Item2" isnull="true" iskey="true">

      <property name="Width">107</property>

      <property name="Visible">true</property>

      <property name="VisibleIndex">1</property>

      <property name="Name">GridColumn2</property>

    </property>

    <property name="Item3" isnull="true" iskey="true">

      <property name="Visible">true</property>

      <property name="VisibleIndex">5</property>

      <property name="Name">GridColumn9</property>

    </property>

    <property name="Item4" isnull="true" iskey="true">

      <property name="Visible">true</property>

      <property name="VisibleIndex">2</property>

      <property name="Name">GridColumn3</property>

    </property>

    <property name="Item5" isnull="true" iskey="true">

      <property name="Width">116</property>

      <property name="Visible">true</property>

      <property name="VisibleIndex">3</property>

      <property name="Name">GridColumn5</property>

    </property>

    <property name="Item6" isnull="true" iskey="true">

      <property name="Width">223</property>

      <property name="Visible">true</property>

      <property name="VisibleIndex">4</property>

      <property name="Name">GridColumn6</property>

    </property>

    <property name="Item7" isnull="true" iskey="true">

      <property name="Width">206</property>

      <property name="Visible">true</property>

      <property name="VisibleIndex">6</property>

      <property name="Name">GridColumn4</property>

    </property>

    <property name="Item8" isnull="true" iskey="true">

      <property name="Width">115</property>

      <property name="Visible">true</property>

      <property name="VisibleIndex">7</property>

      <property name="Name">GridColumn7</property>

    </property>

    <property name="Item9" isnull="true" iskey="true">

      <property name="Width">121</property>

      <property name="Visible">true</property>

      <property name="VisibleIndex">8</property>

      <property name="Name">GridColumn8</property>

    </property>

    <property name="Item10" isnull="true" iskey="true">

      <property name="Width">62</property>

      <property name="Visible">true</property>

      <property name="VisibleIndex">9</property>

      <property name="Name">GridColumn10</property>

    </property>

  </property>

  <property name="OptionsView" isnull="true" iskey="true">

    <property name="ShowGroupPanel">false</property>

    <property name="ShowViewCaption">true</property>

    <property name="EnableAppearanceEvenRow">true</property>

    <property name="ColumnAutoWidth">false</property>

  </property>

  <property name="ActiveFilterString" />

  <property name="GroupSummarySortInfoState" />

</XtraSerializer>

 

 

 

 

 

2. TmsVehChassisGV1

<XtraSerializer version="1.0" application="View">

  <property name="#LayoutVersion" />

  <property name="ActiveFilterEnabled">true</property>

  <property name="Columns" iskey="true" value="10">

    <property name="Item1" isnull="true" iskey="true">

      <property name="Name">GridColumn1</property>

    </property>

    <property name="Item2" isnull="true" iskey="true">

      <property name="Width">107</property>

      <property name="Visible">true</property>

      <property name="VisibleIndex">0</property>

      <property name="Name">GridColumn2</property>

    </property>

    <property name="Item3" isnull="true" iskey="true">

      <property name="Visible">true</property>

      <property name="VisibleIndex">1</property>

      <property name="Name">GridColumn9</property>

    </property>

    <property name="Item4" isnull="true" iskey="true">

      <property name="Visible">true</property>

      <property name="VisibleIndex">3</property>

      <property name="Name">GridColumn3</property>

    </property>

    <property name="Item5" isnull="true" iskey="true">

      <property name="Width">116</property>

      <property name="Visible">true</property>

      <property name="VisibleIndex">3</property>

      <property name="Name">GridColumn5</property>

    </property>

    <property name="Item6" isnull="true" iskey="true">

      <property name="Width">137</property>

      <property name="Visible">true</property>

      <property name="VisibleIndex">4</property>

      <property name="Name">GridColumn6</property>

    </property>

    <property name="Item7" isnull="true" iskey="true">

      <property name="Width">84</property>

      <property name="Visible">true</property>

      <property name="VisibleIndex">5</property>

      <property name="Name">GridColumn4</property>

    </property>

    <property name="Item8" isnull="true" iskey="true">

      <property name="Width">115</property>

      <property name="Visible">true</property>

      <property name="VisibleIndex">6</property>

      <property name="Name">GridColumn7</property>

    </property>

    <property name="Item9" isnull="true" iskey="true">

      <property name="Width">121</property>

      <property name="Visible">true</property>

      <property name="VisibleIndex">2</property>

      <property name="Name">GridColumn8</property>

    </property>

    <property name="Item10" isnull="true" iskey="true">

      <property name="Width">62</property>

      <property name="Visible">true</property>

      <property name="VisibleIndex">7</property>

      <property name="Name">GridColumn10</property>

    </property>

  </property>

  <property name="OptionsView" isnull="true" iskey="true">

    <property name="ShowGroupPanel">false</property>

    <property name="ShowViewCaption">true</property>

    <property name="EnableAppearanceEvenRow">true</property>

    <property name="ColumnAutoWidth">false</property>

  </property>

  <property name="ActiveFilterString" />

  <property name="SortInfo">~Xtra#Base64AAEAAAD/////AQAAAAAAAAAMAgAAAF5EZXZFeHByZXNzLlh0cmFHcmlkLnYxMS4xLCBWZXJzaW9uPTExLjEuMTEuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iODhkMTc1NGQ3MDBlNDlhBQEAAAA4RGV2RXhwcmVzcy5YdHJhR3JpZC5Db2x1bW5zLkdyaWRDb2x1bW5Tb3J0SW5mb0NvbGxlY3Rpb24EAAAACmdyb3VwQ291bnQFY2xvbmUPY2xvbmVHcm91cENvdW50E0NvbGxlY3Rpb25CYXNlK2xpc3QAAwADCLMBU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuTGlzdGAxW1tEZXZFeHByZXNzLlh0cmFHcmlkLkNvbHVtbnMuR3JpZENvbHVtblNvcnRJbmZvLCBEZXZFeHByZXNzLlh0cmFHcmlkLnYxMS4xLCBWZXJzaW9uPTExLjEuMTEuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iODhkMTc1NGQ3MDBlNDlhXV0IHFN5c3RlbS5Db2xsZWN0aW9ucy5BcnJheUxpc3QCAAAAAQAAAAkDAAAAAAAAAAkEAAAABAMAAACzAVN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkxpc3RgMVtbRGV2RXhwcmVzcy5YdHJhR3JpZC5Db2x1bW5zLkdyaWRDb2x1bW5Tb3J0SW5mbywgRGV2RXhwcmVzcy5YdHJhR3JpZC52MTEuMSwgVmVyc2lvbj0xMS4xLjExLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YV1dAwAAAAZfaXRlbXMFX3NpemUIX3ZlcnNpb24EAAAwRGV2RXhwcmVzcy5YdHJhR3JpZC5Db2x1bW5zLkdyaWRDb2x1bW5Tb3J0SW5mb1tdAgAAAAgICQUAAAABAAAAAQAAAAQEAAAAHFN5c3RlbS5Db2xsZWN0aW9ucy5BcnJheUxpc3QDAAAABl9pdGVtcwVfc2l6ZQhfdmVyc2lvbgUAAAgICQYAAAACAAAABwAAAAcFAAAAAAEAAAAEAAAABC5EZXZFeHByZXNzLlh0cmFHcmlkLkNvbHVtbnMuR3JpZENvbHVtblNvcnRJbmZvAgAAAAkHAAAADQMQBgAAAAQAAAAJCAAAAAkJAAAADQIMCgAAABlEZXZFeHByZXNzLlh0cmFHcmlkLnYxMS4xBQcAAAAuRGV2RXhwcmVzcy5YdHJhR3JpZC5Db2x1bW5zLkdyaWRDb2x1bW5Tb3J0SW5mbwIAAAAJU29ydE9yZGVyCkNvbHVtbk5hbWUAAQgKAAAAAQAAAAYLAAAAC0dyaWRDb2x1bW44AQgAAAAHAAAAAQAAAAYMAAAAC0dyaWRDb2x1bW4zAQkAAAAHAAAAAQAAAAkLAAAACw==</property>

  <property name="GroupSummarySortInfoState" />

</XtraSerializer>

:
Posted by 하늘바램