Cascading Combos (カスケード コンボ) を含む React Grid
Grid の編集機能では、カスケード コンボボックス コンポーネントを使用する機会が提供されます。前の IgrCombo
で値を選択すると、ユーザーは次の React Combobox コンポーネントでの選択に関連するデータのみを受け取ります。
カスケード コンボを使用した Angular Grid サンプルの概要
以下のサンプルは、IgrGrid
がネストされた Cascading IgrCombo
コンポーネントとどのように動作するかを示しています。
設定
列の編集を有効にするには、editable
プロパティが true に設定されていることを確認してください。
列の編集が有効になったら、IgrCombo
を追加することから始めることができます。ここで、単一選択を 1 つだけ使用できるようにするには、singleSelect
プロパティを設定する必要があることに注意してください。
import { IgrComboModule, IgrCombo } from 'igniteui-react';
IgrComboModule.register();
次に、コンボを使用して列テンプレートを定義する必要があります。
<IgrColumn
field="Country"
header="Country"
bodyTemplate={webGridCountryDropDownTemplate}
name="column1">
</IgrColumn>
function webGridCountryDropDownTemplate(props: {dataContext: IgrCellTemplateContext}) => {
var cell = props.dataContext.cell as any;
if (cell === undefined) {
return <></>;
}
const id = cell.id.rowID;
const comboId = "country" + id;
return (
<>
<IgrCombo data={countries} ref={comboRefs} change={(x: any, args: any) => {onCountryChange(id, x, args) }} placeholder="Choose Country..." valueKey="Country" displayKey="Country" singleSelect="true" name={comboId}></IgrCombo>
</>
);
}
displayKey
- オブジェクト配列に必要 - 項目のテキストに使用されるプロパティを指定します。displayKey
に値が指定されていない場合、コンボは指定されたvalueKey
(存在する場合) を使用します。
選択の変更を処理するには、change
イベントが必要です。発行されたイベント引数には、変更前の選択、現在の選択、追加または削除された項目に関する情報が含まれています。したがって、前のコンボの選択に基づいて値をフィルタリングします。
function onCountryChange(rowId: string, cmp: any, args:any) {
const regionCombo = comboRefCollection.get("region_" + rowId);
setTimeout(() => {
const newValue = cmp.value[0];
if (newValue === undefined) {
regionCombo.deselect(regionCombo.value);
regionCombo.disabled = true;
regionCombo.data = [];
} else {
regionCombo.disabled = false;
regionCombo.data = regions.filter(x => x.Country === newValue);
}
});
}
既知の問題と制限
制限 | 説明 |
---|---|
コンボ ドロップダウン リストは他の UI 要素の後ろに隠れる場合があります。 | グリッド内の要素の積み重ね順序により、コンボ ドロップダウンがヘッダーやフッターなどの他の要素の後ろに隠れる場合があります。 |