In PCF (Power Apps Component Framework) for Microsoft Dynamics CRM, you can update an input field by handling the “onChange” event for the field and using the Web API to update the corresponding record. Here’s an example of how to do this:
import { IInputs, IOutputs } from "./generated/ManifestTypes";
export class PCFInput implements ComponentFramework.StandardControl {
private _context: ComponentFramework.Context;
private _input: HTMLInputElement;
constructor() { }
public init(context: ComponentFramework.Context, notifyOutputChanged: () => void, state: ComponentFramework.Dictionary, container:HTMLDivElement) {
// Store the context for later use
this._context = context;
// Create an input element
this._input = document.createElement("input");
// Add the input to the container element
container.appendChild(this._input);
// Add a change event listener to the input
this._input.addEventListener("change", (event) => {
// Get the new value
let newValue = this._input.value;
// Update the record using the Web API
let entityName = this._context.parameters.entityName.raw || "";
let recordId = this._context.parameters.recordId.raw || "";
let fieldName = this._context.parameters.fieldName.raw || "";
let entity = {};
entity[fieldName] = newValue;
let request = new XMLHttpRequest();
request.open("PATCH", encodeURI(`/${entityName}s(${recordId})`), true);
request.setRequestHeader("OData-MaxVersion", "4.0");
request.setRequestHeader("OData-Version", "4.0");
request.setRequestHeader("Accept", "application/json");
request.setRequestHeader("Content-Type", "application/json; charset=utf-8");
request.onreadystatechange = () => {
if (request.readyState === 4 && request.status === 204) {
// The update was successful
// ...
}
else if (request.readyState === 4) {
// There was an error
// ...
}
};
request.send(JSON.stringify(entity));
// Notify the platform that the value has changed
notifyOutputChanged();
});
// Set the initial value
this._input.value = this._context.parameters.fieldValue.raw || "";
}
// ...
}
In this code, we create an input element and add it to the container element. We also add a change event listener to the input using the addEventListener method. In the event listener, we get the new value using the value property and update the record using the Web API. The entityName, recordId, and fieldName parameters are passed to the control from the platform and used to determine which record and field to update. Finally, we call the notifyOutputChanged function to notify the platform that the value has changed.


