IgrDataGrid ではテンプレート列機能が提供されております。任意のユーザーコントロールを埋め込み、行に対する機能を追加するなど、グリッドコントロールをカスタマイズすることができます。
実装コード
<IgrDataGrid dataSource={data} autoGenerateColumns="false"> <IgrTextColumn field="id" headerText="ID 列"></IgrTextColumn> <IgrTextColumn field="name" headerText="名前列"></IgrTextColumn> <IgrTemplateColumn field="template" headerText="テンプレート列" cellUpdating={onTemplateCellUpdating} > </IgrTemplateColumn> </IgrDataGrid>
function onTemplateCellUpdating(s: IgrTemplateColumn, e: IgrTemplateCellUpdatingEventArgs) { const content = e.content as HTMLDivElement; const info = e.cellInfo as IgrTemplateCellInfo; if (content.childElementCount === 0) { const controlContainer = document.createElement("div"); controlContainer.style.display = "inline-flex"; const buttonRight = document.createElement("button"); buttonRight.textContent = info.rowItem.id; buttonRight.onclick = function () { console.log("buttonRight clicked", info.rowItem); }; controlContainer.appendChild(buttonRight); const buttonLeft = document.createElement("button"); buttonLeft.textContent = info.rowItem.name; buttonLeft.onclick = function () { console.log("buttonLeft clicked", info.rowItem); }; controlContainer.appendChild(buttonLeft); content.appendChild(controlContainer); } }