CommentHelper
정의
네임스페이스: GST.PlusWin6.Core.Library
어셈블리: GST.PlusWin6.Core.dll
설명
[이미지 1]과 같이 폼에 Grid 형식의 코멘트 관리 기능을 구현할 경우 반복되는 코드를 일반화하여 간편하게 구현할 수 있도록 지원하는 클래스
GridView에 GridColumn은 직접 디자인 필요
FieldName: 작성일(recdt), 작성자(insert_userid), 코멘트(comment)

데이터베이스 변경 사항
테이블
sysHomeComment
sysFormComments
저장 프로시저
P_sysHomeComment_Q
sys_sel_comments
저장 프로시저
P_sysHomeComment_S
sys_sav_comments
Method
AddViewItem
코멘트용 GridView 개체와 sysFormComments 테이블의 관리 항목 필드인 폼ID ('form_id'), 테이블ID ('table_id') 기준 정보를 매핑
Parameters
GridView view
: CommentHelper 기능을 사용할 GridView 타입 개체string formId
: 해당 GridView로 처리되는 코멘트 데이터의 'form_id' 필드 값string tableId
: 해당 GridView로 처리되는 코멘트 데이터의 'table_id' 필드 값
public void AddViewItem(GridView view, string formId, string tableId);
Retrieve
데이터 조회
파라미터 '
view
'의 GridControl.DataSource에 결과를 바로 바인딩
public ResultSet Retrieve(GridView view, string orgdiv, string refKey);
SaveData
데이터 저장
public bool SaveData(GridView view, string orgdiv, string refKey);
public bool SaveData(GridView view, string orgdiv, string refKey, out ResultSet resultSet);
AddRow
GridView에 새로운 행을 추가
작성일 필드('recdt')에 사용자 PC의 현재 일자 세팅
작성자 필드('insert_userid')에 현재 로그인한 사용자 ID 세팅
public DataRow AddRow(GridView view);
DeleteRow
GridView에 선택한 행을 제거
작성자 필드에 저장된 ID와 현재 로그인한 사용자 ID를 비교하여 다를 경우 경고 메시지 팝업
Messages.DeleteOnlyCreator ("작성자만 삭제할 수 있습니다.")
public bool DeleteRow(GridView view);
GridView_ValidatingEditor
작성자 필드에 저장된 ID와 현재 로그인한 사용자 ID가 다를 경우 데이터 수정 시 경고 처리용 이벤트 핸들러
Messages.ModifyOnlyCreator ("작성자만 수정할 수 있습니다.")
public void GridView_ValidatingEditor(object sender, BaseContainerValidateEditorEventArgs e);
CommentHelper를 사용하여 코멘트 기능 구현 절차
1. GridView 설정
CommentHelper.AddViewItem 메서드로 GridView를 등록
GridView.ValidatingEditor 이벤트에 CommentHelper.GridView_ValidatingEditor 이벤트 핸들러 연결
public SY_A0010(params object[] args) : base(ref args)
{
InitializeComponent();
...
grpComment.CustomButtonClick += GroupControl_CustomButtonClick;
...
CommentHelper.AddViewItem(gvwComment, FormId, "comCodeGroup");
gvwComment.ValidatingEditor += CommentHelper.GridView_ValidatingEditor;
...
}
2. 코멘트 데이터 조회 기능 구현
CommentHelper.Retrieve 메서드로 데이터 조회 및 바인딩
public override void FocusedRowChanged(ColumnView view)
{
if (view.Equals(gvwList))
{
if (view.RowCount > 0 && view.FocusedRowHandle >= 0)
{
if (!RetrieveHelper.IsFindingRowHandle(view))
{
FillValuesFromReferenceControl(grpMaster, grdList);
CommentHelper.Retrieve(gvwComment, string.Empty, gvwList.GetFocusedRowCellValue("group_code")?.ToString());
Retrieve("detail");
}
}
else
{
InitControlsRecursive(grpMaster);
InitControlsRecursive(grpComment);
}
SetReadOnlyRecursive(txtGroupCode, true);
AttachmentHelper.AcceptChanges();
}
}
3. GroupControl 버튼 클릭 이벤트 구현
행 추가 (CommentHelper.AddRow)
행 삭제 (CommentHelper.DeleteRow)
저장 (CommentHelper.SaveData)
private void GroupControl_CustomButtonClick(object sender, DevExpress.XtraBars.Docking2010.BaseButtonEventArgs e)
{
(sender as Control)?.Focus();
string tagValue = e.Button?.Properties?.Tag?.ToString() ?? string.Empty;
if (sender.Equals(grpComment))
{
if (tagValue.Equals("add"))
{
CommentHelper.AddRow(gvwComment);
}
else if (tagValue.Equals("remove"))
{
CommentHelper.DeleteRow(gvwComment);
}
else if (tagValue.Equals("save"))
{
// 신규 입력상태 체크
if (!txtGroupCode.ReadOnly)
{
MessageForm.Show(Messages.AfterSavingNewDataCanRegisterComments);
return;
}
// 읽기 전용이면서 값이 비어있으면 조회되지 않은 상태
else if (string.IsNullOrEmpty(txtGroupCode.Text))
{
MessageForm.Show(Messages.NoDataRetrieved);
return;
}
string groupCode = gvwList.GetFocusedRowCellValue("group_code")?.ToString();
if (CommentHelper.SaveData(gvwComment, string.Empty, groupCode))
CommentHelper.Retrieve(gvwComment, string.Empty, groupCode);
}
}
}
Last updated