데이터 찾아가기 (IFindingData)
개요
프로그램 A에서 프로그램 B를 실행하고 특정 데이터를 찾아가는 기능 구현 가이드
BaseForm.OpenFormByTab 메서드로 특정 프로그램을 실행하고 메서드의 반환 값을 IFindingData 인터페이스 형식으로 캐스팅하여 GoToData 메서드를 호출
Guide
폼 실행 <From>
OpenFormByTab
메서드를 호출하여 반환 값을IFindingData
인터페이스 형식으로 캐스팅하고GoToData
메서드를 호출아래 코드는 Grid의 행을 더블 클릭하면 [공지사항] 메뉴를 실행하는 예시
private void GridView_DoubleClick(object sender, EventArgs e)
{
var gridView = sender as GridView;
DevExpress.Utils.DXMouseEventArgs dxMouseEventArgs = e as DevExpress.Utils.DXMouseEventArgs;
DevExpress.XtraGrid.Views.Grid.ViewInfo.GridHitInfo hitInfo = gridView.CalcHitInfo(dxMouseEventArgs.Location);
if (!hitInfo.InRow || hitInfo.RowHandle < 0 || hitInfo.Column == null)
return;
if (gridView.Equals(gvwNotice))
{
string datnum = gridView.GetRowCellValue(hitInfo.RowHandle, "datnum")?.ToString() ?? string.Empty;
string recdt = gridView.GetRowCellValue(hitInfo.RowHandle, "recdt")?.ToString() ?? string.Empty;
BaseForm form = OpenFormByTab("CM_A0000", null, false);
// 전달할 파라미터 (0: 현재 폼ID, 1: 키 값(datnum), 2: 작성일(recdt))
var paramValues = new object[]
{
FormId,
datnum,
recdt
};
(form as IFindingData)?.GoToData(paramValues);
}
}
실행된 폼 <To>
IFindingData
인터페이스를 상속받아GoToData
메서드를 구현아래 코드는 전달받은 파라미터를 참조하여 검색 결과로부터 FindRow로 찾을 데이터가 조회될 수 있도록 조회 조건의 기간을 수정하고
RetrieveHelper.SetValueToFindRow
메서드로 찾을 데이터의 키 값(datnum
)을 세팅
public partial class CM_A0000 : BaseForm, IFindingData
{
...
public bool GoToData(params object[] args)
{
if ((args?.Length ?? 0) == 0)
return false;
string fromFormId = args.ElementAtOrDefault(0)?.ToString();
string datnum = args.ElementAtOrDefault(1)?.ToString();
string recdt = args.ElementAtOrDefault(2)?.ToString();
string beforeFromDate = ymdFrdt.yyyyMMdd;
string beforeToDate = ymdTodt.yyyyMMdd;
// 조건 초기화
InitControlsRecursive(grpTop);
// 시작일 설정
if (beforeFromDate.CompareTo(recdt) == 1)
{
ymdFrdt.EditValue = recdt;
}
else
{
ymdFrdt.EditValue = beforeFromDate;
}
// 종료일 설정
if (beforeToDate.CompareTo(recdt) == -1)
{
ymdTodt.EditValue = recdt;
}
else
{
ymdTodt.EditValue = beforeToDate;
}
// 필수 입력 필드 초기화
radPublish_yn.EditValue = "%";
if (datnum != null)
{
RetrieveHelper.SetValueToFindRow(gvwList, datnum);
ClickRetrieveButton();
return true;
}
else
{
return false;
}
}
...
}
Last updated