@@ -47,7 +47,7 @@ export class DataverseService implements IDataverseService {
4747 fetchXmlOrJson,
4848 allocatedWidth : this . getAllocatedWidth ( ) ,
4949 default : {
50- fetchXml : this . _context . parameters . defaultFetchXmlProperty . raw ,
50+ fetchXml : this . _context . parameters . defaultFetchXml . raw ,
5151 pageSize : defaultPageSize ,
5252 newButtonVisibility : this . _context . parameters . newButtonVisibility . raw === '1' ,
5353 deleteButtonVisibility : this . _context . parameters . deleteButtonVisibility . raw === '1' ,
@@ -105,26 +105,34 @@ export class DataverseService implements IDataverseService {
105105 }
106106
107107 public async getRecordsCount ( fetchXml : string ) : Promise < number > {
108- let pagingCookie = null ;
109108 let numberOfRecords = 0 ;
110109 let page = 0 ;
111- const parser : DOMParser = new DOMParser ( ) ;
112- const xmlDoc : Document = parser . parseFromString ( fetchXml , 'text/xml' ) ;
113- const fetch : Element = xmlDoc . getElementsByTagName ( 'fetch' ) ?. [ 0 ] ;
110+ let pagingCookie : string | null = null ;
114111
115112 const entityName : string = getEntityNameFromFetchXml ( fetchXml ) ;
116- fetch ?. removeAttribute ( 'count' ) ;
117113 const changedAliasNames : string = changeAliasNames ( fetchXml ) ;
118114
119- do {
115+ const updateFetchXml = ( xml : string , page : number ) : string => {
116+ const parser : DOMParser = new DOMParser ( ) ;
117+ const xmlDoc : Document = parser . parseFromString ( xml , 'text/xml' ) ;
118+ const fetch : Element = xmlDoc . getElementsByTagName ( 'fetch' ) ?. [ 0 ] ;
119+
120+ fetch ?. removeAttribute ( 'count' ) ;
120121 fetch ?. removeAttribute ( 'page' ) ;
121- fetch . setAttribute ( 'page' , `${ ++ page } ` ) ;
122- // eslint-disable-next-line no-invalid-this
122+
123+ fetch . setAttribute ( 'page' , `${ page } ` ) ;
124+
125+ const serializer = new XMLSerializer ( ) ;
126+ return serializer . serializeToString ( xmlDoc ) ;
127+ } ;
128+
129+ do {
130+ const updatedFetchXml : string = updateFetchXml ( changedAliasNames , ++ page ) ;
123131 const data : any = await this . _context . webAPI . retrieveMultipleRecords (
124- entityName , `?fetchXml=${ encodeURIComponent ( changedAliasNames ) } ` ) ;
132+ entityName , `?fetchXml=${ encodeURIComponent ( updatedFetchXml ) } ` ) ;
133+
125134 numberOfRecords += data . entities . length ;
126135 pagingCookie = data . fetchXmlPagingCookie ;
127-
128136 } while ( pagingCookie ) ;
129137
130138 return numberOfRecords ;
@@ -153,10 +161,16 @@ export class DataverseService implements IDataverseService {
153161 }
154162
155163 public openLookupForm ( entity : Entity , fieldName : string ) : void {
156- const entityName : string = entity [
157- `_${ fieldName } _value@Microsoft.Dynamics.CRM.lookuplogicalname` ] ;
158-
159- const entityId : string = entity [ `_${ fieldName } _value` ] ;
164+ let entityName : string ;
165+ let entityId : string ;
166+ if ( fieldName . startsWith ( 'alias' ) ) {
167+ entityName = entity [ `${ fieldName } @Microsoft.Dynamics.CRM.lookuplogicalname` ] ;
168+ entityId = entity [ `${ fieldName } ` ] ;
169+ }
170+ else {
171+ entityName = entity [ `_${ fieldName } _value@Microsoft.Dynamics.CRM.lookuplogicalname` ] ;
172+ entityId = entity [ `_${ fieldName } _value` ] ;
173+ }
160174 this . openRecordForm ( entityName , entityId ) ;
161175 }
162176
0 commit comments