부서 이름 변경 및 삭제
1. 부서 이름을 변경
이미 등록된 이름으로는 변경되면 안된다.
비어 있는 경우 저장 버튼은 비 활성화
2. 부서 순서 변경
선택된 부서의 상위 부서가 같으면서 같은 레벨의 이름이 표시되어 해당 순서를 변경 할 수 있어야 한다.
3. 부서 삭제
원하는 부서를 삭제 (기본 기능)
별도의 강좌로 아래 내용 추가 예정
부서에 하위 부서 및 직원이 있는 경우 삭제가 되지 않게 구성 예정
회사의 경우 소속 부서 및 직원이 있는 경우 회사를 삭제 하지 못하게 구성 필요
수정 화면
OnSelect 속성 값으로 ColDepartment 값을 가져와 순서 변경을 위해 ColDepartmentEdit 컬렉션을 만든다.
UpdateContext({ editMode: true, selectedRecord: DepartmentGallery.Selected });
// ColDepartmentEdit 컬렉션을 초기화
Clear(ColDepartmentEdit);
// OrgDepartment 값으로 컬렉션을 만들기
ForAll(
//Sort(OrgDepartment,OrderNo,SortOrder.Ascending),
Sort(Filter(ColDepartment,CompanyID=CurrentItem.CompanyID And ParentID=CurrentItem.ParentID),OrderNo,SortOrder.Ascending),
Collect(
ColDepartmentEdit,
{
ID: ID,
cOrderNo: OrderNo,
cName: Name,
cID:First(Sort(ColDepartmentEdit,cID,SortOrder.Descending)).cID +1,
cIsCheck:false
}
)
);
|
OrderNo 변경 방법은 아래 자료 방법을 그대로 사용하였습니다.
5. PowerApps으로 만드는 조직도 솔루션 - 05. 자동 번호 및 순서 변경
저장 버튼 설정
저장 버튼은 newMode 와 editMode에 동일하게 사용하는 버튼으로 If 조건으로 분류하여 설정
DisplayMode 설정
If(
newMode,
// 등록된 이름과 이름 값이 비어 있으면 DisplayMode = DisplayMode.Disabled
If(IsBlank(LookUp(Filter(OrgDepartment,CompanyID=CurrentItemSub.CompanyID),Name=DepartmentNameCard.Text)) And !IsBlank(DepartmentNameCard.Text),DisplayMode.Edit,DisplayMode.Disabled),
editMode,
//
If(
// 등록된 이름 중 선택된 이름을 제외한 이름과 같은지 확인
Or(CurrentItem.Name = DepartmentNameCard.Text, IsBlank(LookUp(Filter(OrgDepartment,CompanyID=CurrentItemSub.CompanyID),Name=DepartmentNameCard.Text)))
// 값이 비어 있는지 확
And !IsBlank(DepartmentNameCard.Text),DisplayMode.Edit,DisplayMode.Disabled
)
)
|
OnSelect 설정
If(editMode,
// Name 값이 변경되었을 경우 저장
If(DepartmentGallery.Selected.Name <> DepartmentNameCard.Text,Patch(OrgDepartment,First(Filter(OrgDepartment,ID=DepartmentGallery.Selected.ID)),{Name:DepartmentNameCard.Text}));
// 순서 변경은 변경된 값을 확인하여 OrderNo를 변경
If(!IsBlank(LookUp(ColDepartmentEdit,cIsCheck= true )),ForAll(RenameColumns(Filter(ColDepartmentEdit,cIsCheck= true ),ID,NewID),Patch(OrgDepartment,LookUp(OrgDepartment,ID=NewID),{OrderNo:cOrderNo})))
,
// newMode에서 JobtitleForm 저장
SubmitForm(DepartmentForm)
);
// ColDepartment 초기화 및 생성
ClearCollect(ColDepartment,AddColumns(OrgDepartment,NewID,ID));
// OrgCompany의 회사 정보를 ColDepartment에 추가
ForAll(
OrgCompany,
Collect(
ColDepartment,
{
No: Text(OrderNo,"00"),
CompanyID : ID,
Name: Name,
Level: 0,
OrderNo: Text(OrderNo,"00") & "000000000000000000000000000000",
Visible:true
}
)
);
// ColEmployee 초기화 및 생성
ClearCollect(ColEmployee,AddColumns(OrgEmployee,NewID,ID));
ForAll(
OrgCompany,
Collect(
ColEmployee,
{
No: Text(OrderNo,"00"),
CompanyID : ID,
Name: Name,
Level: 0,
OrderNo: Text(OrderNo,"00") & "000000000000000000000000000000",
Visible:true
}
)
);
|
부서 삭제
삭제 기능은 기본 기능으로 별도 설정하지 않음
댓글