Forum Discussion

LaxmikantB2's avatar
LaxmikantB2
Copper Contributor
Aug 27, 2022
Solved

change value of one field on the basis of other using spfx field customizer

I have a field name called Security(choice field) and other field name is Sensitivity. I want to copy the values of Security in Sensitivity in the list view. For example if value of security is Internal then in sensitivity column also it should show Internal in the list view only irrespective of the values stored in sensitivity. In laymen term Both field should show same values. I am new in spfx environment. Please help. I am using react framework. Let me know if you need any other details.

  • NanddeepNachan's avatar
    NanddeepNachan
    Sep 01, 2022

    Hi LaxmikantB2 

     

    The below code should give you Security (choice column) value:

    event.listItem["_values"].get("Security")

     

    The result is as follows:

     

    Please note, I am using SPFx v1.15.0

8 Replies

  • Hi LaxmikantB2 

    If you are using SPFx Field Customizer, then implement the onRenderCell with below logic

     

    The method has signature as follows:

    public onRenderCell(event: IFieldCustomizerCellEventParameters): void 

     

    Use below code to get the Security field value:

    const securityValue = event.listItem["_values"].get("Security");

     

    Once you get the item id, you can get the value of other field from same item. 

     

    Return the value as:

    event.domElement.innerHTML = `<div>${securityValue}</div>`

      • NanddeepNachan's avatar
        NanddeepNachan
        Learn Expert

        Hi LaxmikantB2 

        I will try to share the working code by coming Sunday. Bit away from laptop due to ongoing festive season. Sorry for that.

    • LaxmikantB2's avatar
      LaxmikantB2
      Copper Contributor

      NanddeepNachan 

      Hello Nanddeep,
      Thanks for your reply...
      What Will be inside the "_Values"?
      currently my code look like this in .ts file:
      public onRenderCell(event: IFieldCustomizerCellEventParameters): void {
      const securityValue = event.listItem["_values"].get("Security");

      const conditionalFc: React.ReactElement<{}> =
      React.createElement(ConditionalFc, { text } as IConditionalFcProps);

      ReactDOM.render(conditionalFc, event.domElement);
      }

      And in component .tsx file

       public render(): React.ReactElement<{}> {
          return (
            <div className={styles.conditionalFc}>
              { this.props.text }
            </div>
          );
        }



      I am getting error as :
      Element implicitly has an 'any' type because expression of type '"_values"' can't be used to index type 'ListItemAccessor'.
      Property '_values' does not exist on type 'ListItemAccessor'.

Resources