Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.

Reply
Anonymous
Not applicable

how to call enumerateObjectInstances by code

I have panel properties with selector : ISelectionId.getSelector()

 

in my table view i bind event click to define with row is selected by user and show some properties in panel properties using enumerateObjectInstances, the problem are when panel properties active/show and user click some row in table view because enumerateObjectInstances not called by power bi.

 

it any way to call enumeration by code? i need to refresh panel properties depend row selected

1 ACCEPTED SOLUTION
Anonymous
Not applicable

solve this case use persist object

 

    public syncSelection(ids: ISelectionId[], row: number, col: number, selector: Selector) {
        if (row == null) return;

        
        let enumerationObject: powerbi.VisualObjectInstanceEnumerationObject = {
            containers: [],
            instances: [],
        };
        let persistProperties : VisualObjectInstancesToPersist;

        if(row == -1){ // remove from format panel
            this.settingDataPoint(enumerationObject, "dataPoint");
            persistProperties = {
                remove: enumerationObject.instances
            }
        }
        
        this.selected.row = row;
        this.selected.col = col;
        this.selected.selected = ids[0];
        this.selected.selectionId = ids;
        this.selected.selector = selector;

        if(row != -1) {
            this.settingDataPoint(enumerationObject, "dataPoint");
            persistProperties = {
                replace : enumerationObject.instances
            }
        }
        // console.log('ini coba persist', persistProperties);
        this.host.persistProperties(persistProperties);
    }

but I still don't understand remove and removeObject how to use it, to confused

 

View solution in original post

2 REPLIES 2
Anonymous
Not applicable

it is imposible to update format panel when user click some row in our view?

 

I try using this.host.refreshHostData(); this solve my problem when developing,

but this not working when we use pbiviz package because enumerateObjectInstances never called

Anonymous
Not applicable

solve this case use persist object

 

    public syncSelection(ids: ISelectionId[], row: number, col: number, selector: Selector) {
        if (row == null) return;

        
        let enumerationObject: powerbi.VisualObjectInstanceEnumerationObject = {
            containers: [],
            instances: [],
        };
        let persistProperties : VisualObjectInstancesToPersist;

        if(row == -1){ // remove from format panel
            this.settingDataPoint(enumerationObject, "dataPoint");
            persistProperties = {
                remove: enumerationObject.instances
            }
        }
        
        this.selected.row = row;
        this.selected.col = col;
        this.selected.selected = ids[0];
        this.selected.selectionId = ids;
        this.selected.selector = selector;

        if(row != -1) {
            this.settingDataPoint(enumerationObject, "dataPoint");
            persistProperties = {
                replace : enumerationObject.instances
            }
        }
        // console.log('ini coba persist', persistProperties);
        this.host.persistProperties(persistProperties);
    }

but I still don't understand remove and removeObject how to use it, to confused

 

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.