사용자 도구

사이트 도구


etcdoc

문서의 이전 판입니다!


개발중 참고할 자료

- Data Adapter의 동작이해

 1. Data Adapter의 BaseData 속성은 DataTable이다.
   RowStatus가 Added상태이면 연결된 하위 DataAdapter에 Select를 전달하지 않아서
   하위 Data Adapter의 BaseData Table에 Column structure만들어지지 않는다.
   이를 해결하기 위해 상위 BaseDatadp AcceptData() 를 호출할 필요가 있다.
    => Master에 발주마스터와 하위에 상세정보가 있는 데이터를 만들때 이런 문제에 봉착한다.
    최초 화면이 만들어지고 새로운 발주정보등을 입력할때 최상위 Master에 발주정보 행이 하나 필요하게 되는데
    이럴때 Select Procedure에서 빈행을 리턴하기 바란다. 그러면 이런문제는 없어진다.
   
   이 특성을 만든 이유는 많은양의 상위 BaseData 로드될때 하위 DataAdapter가 있으면 속도가 느려지는 문제가 있다.
 2. 데이터 상태변경 메커니즘 
   마스터 DataAdapter가 있고 그 하위에 자식 DataAdapter 가 있는 구조에서
   하위 DataAdapter의 데이터가 변경되면 그에 연결된 상위 DataAdapter의 행도 같이 변경상태로 전환된다.
   그렇게 하여 Parent DataAdapter.Update()를 호출하여 전에 변경된 DataSet을 저장할 수 있다.
 3. DataAdapter의 Data와 UX Control간의 데이터 흐름
   DataAdapter의 각 행의 컬럼이 GridView에 바인딩 되있고 동시에 TextEdit에 연결되 있는경우
   TextEdit.EditValue의 값을 사용자가 변경한 경우 즉시 GridwVew의 해당 컬럼의 값도 변경된다.
 4. 직접 DataAdapter의 BaseData(DataTable) 값을 직접 변경한 경우 화면에 연결된 Control들에게는 즉시 반영되진
   않으며 즉시 반영되게 하고 싶으면 DataAdapter.UBiUpdateRow()를 호출 해야 한다.
   
    DataRow newRow = adt.AddNewRow(); // 행을 DataTable추가함
    newRow["USE_YN"] = 'Y';           // 추가된행의 컬럼에 데이터 넣기
    newRow["INSP_YN"] = 'Y';
    newRow["BOM_YN"] = 'N';
    newRow["PROC_QUAL_YN"] = 'Y';
    newRow["REG_DT"] = DateTime.Now;
    newRow["INPUT_LOCK"] = 'N'; // 2024.07.18 사장님 요청사항으로 기본적으로 설계가 완성되기전에 수주를 받을수 없음
    newRow["SAMPLE_YN"] = 'N';
    adt.UBiUpdateRow(); // 마지막에 호출 필수
 5. GridView, BandedGridview, AdvBandedGridView, TreeView 등에 바인딩 되는 DataSource는 View 이다.
   위 Control에서 바인딩된 데이터에 접근하기 위해서는 아래 예와 같이 처리해야 한다.
   
   ex)
   foreach(DataRowView rv in (DataView)gridMain.GridControl.DataSource)
   {
      rv["ABC"] = "";
   }
 6. GridView에서 강제로 조건에 맞는 데이터 행을 삭제할때
   foreach 로 삭제하면 문제가 발생합니다.
   이런경우 제일 뒷(아래)쪽에서부터 삭제해야 문제가 없습니다.
   
   ex)
   for (int cnt = gridMain.RowCount; cnt >= 0; cnt--)
      if (gridMain.GetRowCellValue(cnt, "CHK_DEL").Nvl().Equals("Y")
        gridMain.DeleteRow(cnt);

- Extention Function

 . null값을 가질 가능성이 있는 값 변환으로 if문에서 번거로뭄 해소
  .Nvl(), .Nvl(""), .Nvl("0")
 . 주어진 DataTime월의 첫번째 일자
   public static DateTime LastDayOfMonth(this DateTime value)
 . 주어진 DateTime 월의 마지막 일자
   public static DateTime LastDayOfMonth(this DateTime value)  
 
 . Json으로 Serialize된 문자열을 Deserialize한다.
   public static T JsonTo<T>(this string value)
 . 해당 유형이 숫자 형태일 경우 True, 아닐경우 False를 반환한다.
   public static bool IsNumeric(this Type type)

상위로 이동

etcdoc.1752982127.txt.gz · 마지막으로 수정됨: (바깥 편집)