Item model
A grid item is a display model in which one row of a DataProvider or the header or footer of a RowGrouping group is displayed as one line in a grid or tree.
Item Model
Each item has an index value in the order in which it is displayed, and most functions in RealGrid are executed by passing this index value. However, items that are not displayed, such as hidden RowGroup items or hidden Tree items, cannot be accessed through this index. For these cases, we provide functions that return item model information inside the grid and use that information to obtain other model information.
Item model types and returns
The types of item models are as follows.
var ItemType = {
ROW: "row", // data row
GROUP: "group", // Group (displayed as group header)
FOOTER: "footer", // group Footer
TREE: "tree" // tree node (also "group")
};
Item model information is returned in the form below.
{
type: "row", // ItemType
itemIndex: 0, // item index
dataRow: -1, // Data row connected to the item. -1 if type is not "row"
checked: false, // Whether item is checked
id: 0, // internal use ID,
parentId: 0, // internal use ID,
footerId: 0, // Internally used ID
};
When calling model-related API and specifying extended as true, the following information is added to the extended model information returned.
level: 2, // Level in the hierarchy, starting from 1
childIndex: 0, // Order in parent model
Get item model
The getModel() function returns the item model corresponding to the item index.
var extended = $("#chkExtendedModel").is(":checked");
var itemIndex = gridView.getCurrent().itemIndex;
var item = gridView.getModel(itemIndex, extended);
alert(JSON.stringify(item));
The getParentModel() function returns the parent item model of the item model.
var extended = $("#chkExtendedModel").is(":checked");
var idx = gridView.getCurrent();
var item = gridView.getModel(idx.itemIndex);
var parent = gridView.getParentModel(item, extended);
alert(JSON.stringify(item));
if (parent) {
idx.itemIndex = parent.itemIndex;
gridView.setCurrent(idx);
}
The getRootModel() function returns the item model's top-level ancestor item model.
var extended = $("#chkExtendedModel").is(":checked");
var idx = gridView.getCurrent();
var item = gridView.getModel(idx.itemIndex);
var root = gridView.getRootModel(item, extended);
console.log(JSON.stringify(root));
alert(JSON.stringify(root));
if (root) {
idx.itemIndex = root.itemIndex;
gridView.setCurrent(idx);
}
The getChildModels() function returns child item models immediately below the item model.
var extended = $("#chkExtendedModel").is(":checked");
var itemIndex = gridView.getCurrent().itemIndex;
var item = gridView.getModel(itemIndex);
if (item) {
var children = gridView.getChildModels(item, extended);
alert(JSON.stringify(children));
}
The getChildModel() function returns the child item model of the item model.
var extended = $("#chkExtendedModel").is(":checked");
var itemIndex = gridView.getCurrent().itemIndex;
var group = gridView.getModelAs(itemIndex, "group");
if (group && group.count > 0) {
var item = gridView.getChildModel(group, 0, extended);
alert(JSON.stringify(item));
}
The getModels() function returns item models corresponding to the specified item indices as an array.
var extended = $("#chkExtendedModel").is(":checked");
var items = gridView.getModels([0, 1, 2], extended);
var s = JSON.stringify(items);
alert(JSON.stringify(s));
The getModelOfRow() function returns the item model corresponding to the specified data row.
var extended = $("#chkExtendedModel").is(":checked");
var row = gridView.getCurrent().dataRow;
var item = gridView.getModelOfRow(row, extended);
alert(JSON.stringify(item));
The getModelsOfRows() function returns item models corresponding to the specified data rows as an array.
var extended = $("#chkExtendedModel").is(":checked");
var items = gridView.getModelsOfRows([0, 1, 2], extended);
var s = JSON.stringify(items);
alert(JSON.stringify(s));
getGroupSummary Returns the sum information of the specified group item model.
var idx = gridView.getCurrent();
var item = gridView.getModelAs(idx.itemIndex, "row");
if (item) {
var group = gridView.getParentModel(item);
if (group && idx.fieldIndex >= 0) {
var summary = gridView.getGroupSummary(group, idx.fieldIndex);
if (summary) {
alert(JSON.stringify(summary));
}
}
}
Expands the specified group item model.
var recursive = $("#chkExpandRecursive").is(":checked");
var force = $("#chkExpandForce").is(":checked");
var itemIndex = gridView.getCurrent().itemIndex;
var group = gridView.getModelAs(itemIndex, "group");
if (group) {
gridView.expandModel(group, recursive, force);
}
collapseModel Collapses the specified group item model.
var recursive = $("#chkCollapseRecursive").is(":checked");
var itemIndex = gridView.getCurrent().itemIndex;
var group = gridView.getModelAs(itemIndex, "group");
if (group) {
gridView.collapseModel(group, recursive);
}
Caution
- Functions that return a large number of item models use memory or This can be a burden in terms of speed, so if it can be solved with an item index, you must use index functions. In particular, extended model information is not a stored value, but is calculated and retrieved each time, so it can cause more burden.
- The model returned from functions will be passed as a parameter to another function, so property values should not be modified. In particular, internally used IDs should not be used as meaningful values.
- The item model of the grid or tree is frequently updated when data changes, new row grouping is performed, or for other reasons. In most cases, saving the returned item model for reuse outside of a function is pointless and can be dangerous.