SPFx 1.14 목록 보기 명령 세트 - 업데이트 31.03.2022

6625 단어
오늘부터 이전 게시물에서 참조한 issue #7795이 수정되었으며 비즈니스 로직 List View Command Set를 "정리"할 수 있습니다.

내 게시물의 예를 사용하여 이제 onInit 동안 목록 컨텍스트에 따라 버튼을 표시하거나 숨길 수 있습니다.

onInit 동안 버튼 표시/숨기기



CommandSet.ts




const registeredList: string[] = ['Travel requests'];

public onInit(): Promise<void> {

  const setCommandsState = (isVisible:boolean) => {
    const compareOneCommand: Command = this.tryGetCommand('COMMAND_1');
    if (compareOneCommand) {
      //Visible for registered lists, does not depend on selected item
      compareOneCommand.visible = isVisible;
    }

    const compareTwoCommand: Command = 
    this.tryGetCommand('COMMAND_2');
    if (compareTwoCommand) {
      //Visible for registered lists, enabled if 1 item selected, so disable by default
      compareTwoCommand.visible = isVisible;
      compareTwoCommand.disabled = true;
    }
  }

  const getListUrl = (listUrl: string): string => {
    let result = listUrl.match(/Lists\/(?<ListName>.*)/);
    return result.groups["ListName"];
  }

  setCommandsState( registeredList.includes(getListUrl(this.context.listView.list.serverRelativeUrl)));
  return Promise.resolve();
}


명령.비활성화



다음으로 정확히 하나의 항목이 선택된 경우에만 'COMMAND_2' 버튼을 활성화하고 싶습니다. 이것은 onListViewUpdatedv2의 작업입니다.

CommandSet.ts




public onListViewUpdatedv2(args: ListViewStateChangedEventArgs): void{
  const compareTwoCommand: Command = this.tryGetCommand('COMMAND_2');
  compareTwoCommand.disabled = !(this.context.listView.selectedRows.length == 1);  
  this.raiseOnChange(); //is it needed? seems to have no effect
}


하지만... 작동하지 않는 것 같습니다: issue #7845 . 😦
계속 알려드리겠습니다.

좋은 웹페이지 즐겨찾기