Skip to content

Commit 09f36ab

Browse files
authored
Merge pull request #1750 from NishkalankBezawada/Issue1738
Fixing for issue 1738 - Error on rendering DynamicForm when having a Date Field with internal name starting with underscore ("_")
2 parents afa6636 + 3378945 commit 09f36ab

File tree

1 file changed

+27
-15
lines changed

1 file changed

+27
-15
lines changed

src/controls/dynamicForm/DynamicForm.tsx

Lines changed: 27 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -411,56 +411,61 @@ export class DynamicForm extends React.Component<
411411
columnInternalName,
412412
hiddenFieldName,
413413
} = field;
414+
let fieldcolumnInternalName = columnInternalName;
415+
if (fieldcolumnInternalName.startsWith('_x') || fieldcolumnInternalName.startsWith('_')) {
416+
fieldcolumnInternalName = `OData_${fieldcolumnInternalName}`;
417+
}
414418
if (field.newValue !== null && field.newValue !== undefined) {
415419

416420
let value = field.newValue;
421+
417422
if (["Lookup", "LookupMulti", "User", "UserMulti", "TaxonomyFieldTypeMulti"].indexOf(fieldType) < 0) {
418423
objects[columnInternalName] = value;
419424
}
420425

421426
// Choice fields
422427

423428
if (fieldType === "Choice") {
424-
objects[columnInternalName] = field.newValue.key;
429+
objects[fieldcolumnInternalName] = field.newValue.key;
425430
}
426431
if (fieldType === "MultiChoice") {
427-
objects[columnInternalName] = { results: field.newValue };
432+
objects[fieldcolumnInternalName] = { results: field.newValue };
428433
}
429434

430435
// Lookup fields
431436

432437
if (fieldType === "Lookup") {
433438
if (value && value.length > 0) {
434-
objects[`${columnInternalName}Id`] = value[0].key;
439+
objects[`${fieldcolumnInternalName}Id`] = value[0].key;
435440
} else {
436-
objects[`${columnInternalName}Id`] = null;
441+
objects[`${fieldcolumnInternalName}Id`] = null;
437442
}
438443
}
439444
if (fieldType === "LookupMulti") {
440445
value = [];
441446
field.newValue.forEach((element) => {
442447
value.push(element.key);
443448
});
444-
objects[`${columnInternalName}Id`] = {
449+
objects[`${fieldcolumnInternalName}Id`] = {
445450
results: value.length === 0 ? null : value,
446451
};
447452
}
448453

449454
// User fields
450455

451456
if (fieldType === "User") {
452-
objects[`${columnInternalName}Id`] = field.newValue.length === 0 ? null : field.newValue;
457+
objects[`${fieldcolumnInternalName}Id`] = field.newValue.length === 0 ? null : field.newValue;
453458
}
454459
if (fieldType === "UserMulti") {
455-
objects[`${columnInternalName}Id`] = {
460+
objects[`${fieldcolumnInternalName}Id`] = {
456461
results: field.newValue.length === 0 ? null : field.newValue,
457462
};
458463
}
459464

460465
// Taxonomy / Managed Metadata fields
461466

462467
if (fieldType === "TaxonomyFieldType") {
463-
objects[columnInternalName] = {
468+
objects[fieldcolumnInternalName] = {
464469
__metadata: { type: "SP.Taxonomy.TaxonomyFieldValue" },
465470
Label: value[0]?.name ?? "",
466471
TermGuid: value[0]?.key ?? "11111111-1111-1111-1111-111111111111",
@@ -476,19 +481,19 @@ export class DynamicForm extends React.Component<
476481
// Other fields
477482

478483
if (fieldType === "Location") {
479-
objects[columnInternalName] = JSON.stringify(field.newValue);
484+
objects[fieldcolumnInternalName] = JSON.stringify(field.newValue);
480485
}
481486
if (fieldType === "Thumbnail") {
482487
if (additionalData) {
483488
const uploadedImage = await this.uploadImage(additionalData);
484-
objects[columnInternalName] = JSON.stringify({
489+
objects[fieldcolumnInternalName] = JSON.stringify({
485490
type: "thumbnail",
486491
fileName: uploadedImage.Name,
487492
serverRelativeUrl: uploadedImage.ServerRelativeUrl,
488493
id: uploadedImage.UniqueId,
489494
});
490495
} else {
491-
objects[columnInternalName] = null;
496+
objects[fieldcolumnInternalName] = null;
492497
}
493498
}
494499
}
@@ -1062,9 +1067,14 @@ export class DynamicForm extends React.Component<
10621067
// eslint-disable-next-line @typescript-eslint/no-explicit-any
10631068
const selectedTags: any = [];
10641069

1070+
let fieldName = field.InternalName;
1071+
if (fieldName.startsWith('_x') || fieldName.startsWith('_')) {
1072+
fieldName = `OData_${fieldName}`;
1073+
}
1074+
10651075
// If a SharePoint Item was loaded, get the field value from it
1066-
if (item !== null && item[field.InternalName]) {
1067-
value = item[field.InternalName];
1076+
if (item !== null && item[fieldName]) {
1077+
value = item[fieldName];
10681078
stringValue = value.toString();
10691079
} else {
10701080
defaultValue = field.DefaultValue;
@@ -1221,8 +1231,10 @@ export class DynamicForm extends React.Component<
12211231

12221232
// Setup DateTime fields
12231233
if (field.FieldType === "DateTime") {
1224-
if (item !== null && item[field.InternalName]) {
1225-
value = new Date(item[field.InternalName]);
1234+
1235+
if (item !== null && item[fieldName]) {
1236+
1237+
value = new Date(item[fieldName]);
12261238
stringValue = value.toISOString();
12271239
} else if (defaultValue === "[today]") {
12281240
defaultValue = new Date();

0 commit comments

Comments
 (0)