I need this functionality in Kinetic.
1 Like
That will be a selection list in kinetic
3 Likes
This control is a complete mess.
It’s broken beyond belief.
Does anybody have this working properly with a grid in 2025.1.x ?

2 Likes
It’s pretty bad. I’ve never used it but some testing shows it only allows certain combinations of these properties and determines the bindingMode from the same.
Below is the determination of modes showing which combinations are valid.
A more user friendly way of doing this would be a mode selector which enables/disables valid properties. And some design-time validation would be nice.
| Mode | Target Type | Source Type | Required Props |
|---|---|---|---|
1 None |
Code (delim) | items list prop | delimiter, targetCodeCol, targetTableName |
1 Simple |
Code (delim) | ? | (either) [] (empty) or ["delimiter"] |
2 TargetCodeDescSourceCodeDesc |
Code (delim) | Code (delim) | delimiter, sourceCodeCol, sourceDescCol, targetCodeCol, targetDescCol, tableName |
3 TargetCodeSourceRows |
Code (delim) | Rows | Option 1: delimiter, sourceViewName, sourceCodeCol, sourceDescCol, targetViewName, targetCodeColOption 2: delimiter, sourceTableName, sourceCodeCol, sourceDescCol, targetTableName, targetCodeCol |
4 TargetRowsSourceRows |
Rows | Rows | Option 1: sourceViewName, sourceCodeCol, sourceDescCol, targetViewName, targetCodeCol, parentRelatedCol, childRelatedColOption 2: sourceViewName, sourceCodeCol, sourceDescCol, targetViewName, targetCodeCol, relatedCol |
5 TargetCodeDescSourceRows |
Code (delim) | Rows | Option 1: delimiter, sourceViewName, sourceCodeCol, sourceDescCol, targetTableName, targetCodeCol, targetDescColOption 2: delimiter, sourceTableName, sourceCodeCol, sourceDescCol, targetTableName, targetCodeCol, targetDescCol |
here’s a working tilde field to tilde field (#2) setup (notice TableName is required):
determineMode source code
determineMode(a) {
if (a.items && a.items.length) {
const u = this.isSimpleOrNone(a);
if (u)
return u
}
return this.isTargetCodeSourceRows(a) ? D_.TargetCodeSourceRows : this.isTargetCodeDescSourceCodeDesc(a) ? D_.TargetCodeDescSourceCodeDesc : this.isTargetCodeDescSourceRows(a) ? D_.TargetCodeDescSourceRows : this.isTargetRowsSourceRows(a) ? D_.TargetRowsSourceRows : void 0
}
isSimpleOrNone(a) {
return this.checkProps(a, ["delimiter", "targetCodeCol", "targetTableName"]) ? D_.None : this.checkProps(a, []) || this.checkProps(a, ["delimiter"]) ? D_.Simple : void 0
}
isTargetCodeDescSourceCodeDesc(a) {
return this.checkProps(a, ["delimiter", "sourceCodeCol", "sourceDescCol", "targetCodeCol", "targetDescCol", "tableName"])
}
isTargetCodeSourceRows(a) {
let u = ["delimiter", "sourceViewName", "sourceCodeCol", "sourceDescCol", "targetViewName", "targetCodeCol"];
return !(!this.checkProps(a, u) && (u = ["delimiter", "sourceTableName", "sourceCodeCol", "sourceDescCol", "targetTableName", "targetCodeCol"],
!this.checkProps(a, u)))
}
isTargetRowsSourceRows(a) {
let u = ["sourceViewName", "sourceCodeCol", "sourceDescCol", "targetViewName", "targetCodeCol", "parentRelatedCol", "childRelatedCol"];
return !(!this.checkProps(a, u) && (u = ["sourceViewName", "sourceCodeCol", "sourceDescCol", "targetViewName", "targetCodeCol", "relatedCol"],
!this.checkProps(a, u)))
}
isTargetCodeDescSourceRows(a) {
let u = ["delimiter", "sourceViewName", "sourceCodeCol", "sourceDescCol", "targetTableName", "targetCodeCol", "targetDescCol"];
return !(!this.checkProps(a, u) && (u = ["delimiter", "sourceTableName", "sourceCodeCol", "sourceDescCol", "targetTableName", "targetCodeCol", "targetDescCol"],
!this.checkProps(a, u)))
}
checkProps(a, u) {
let m = !0;
return this.bindingProps.forEach(A => {
u.indexOf(A) > -1 && !this.hasValue(a, A) && (m = !1),
u.indexOf(A) <= -1 && this.hasValue(a, A) && (m = !1)
}
),
m
}
hasValue(a, u) {
return a[u] && a[u].length
}
Hope this helps.





