ツリーグリッド要素を取得する
ツリーグリッドに対する操作はITreeGrid
オブジェクトから取得できるITreeGridNode
、ITreeGridColumn
、ITreeGridCell
オブジェクトを用います。
ツリーグリッドの行を取得する
すべての行を取得する例です。
public void GetAllNodes(ICommandContext c, ICommandParams p)
{
ITreeGrid treeGrid = c.App.Workspace.CurrentEditor as ITreeGrid;
if (treegrid == null) return;
// 全ノードを取得します
var targetNodes = new[] { treegrid.Root };
var allNodes = targetNodes.Union(GetTreeGridNodes(targetNodes));
var no = 1;
foreach(ITreeGridNode node in allNodes)
{
c.App.Output.WriteLine("sample", $"{no}行目 : {node.Model.Name}");
no++;
}
}
private IEnumerable<ITreeGridNode> GetTreeGridNodes(IEnumerable<ITreeGridNode> targetNodes)
{
// 対象ノードの子ノードを再帰的に収集します
var result = new List<ITreeGridNode>();
foreach (var targetNode in targetNodes)
{
result.Add(targetNode);
result.AddRange(GetTreeGridNodes(targetNode.Children));
}
return result;
}
選択されている行を取得するにはITreeGrid
オブジェクトのGetSelectedNodes
メソッドを用います。
public void GetSelectedNodes(ICommandContext c, ICommandParams p)
{
ITreeGrid treeGrid = c.App.Workspace.CurrentEditor as ITreeGrid;
if (treeGrid == null) return;
// 選択されているノードを取得します
var selectedNodes = treeGrid.GetSelectedNodes();
c.App.Output.WriteLine("sample", $"選択されている行数 : {selectedNodes.Count()}");
}
ツリーグリッドの列を取得する
列を取得するにはITreeGrid
オブジェクトのColumns
プロパティを用います。
public void GetColumns(ICommandContext c, ICommandParams p)
{
ITreeGrid treeGrid = c.App.Workspace.CurrentEditor as ITreeGrid;
if (treeGrid == null) return;
// 列を取得します
var no = 1;
foreach(ITreeGridColumn column in treeGrid.Columns)
{
c.App.Output.WriteLine("sample", $"{no}列目 : {column.DisplayName}");
no++;
}
}
セルの値を取得する
選択されている行のセルの値を取得するにはITreeGridNode
オブジェクトのGetCellValue
メソッドを用います。
public void GetCellValue(ICommandContext c, ICommandParams p)
{
ITreeGrid treegrid = c.App.Workspace.CurrentEditor as ITreeGrid;
if (treegrid == null) return;
// 選択されているノードを取得します
var selectedNodes = treegrid.GetSelectedNodes();
foreach(ITreeGridNode selectedNode in selectedNodes)
{
object cellValue;
// 指定されたインデックスのセルの値を取得します
cellValue = selectedNode.GetCellValueAt(1);
// 指定されたインデックスのセルの値を文字列として取得します
cellValue = selectedNode.GetCellValueStringAt(1);
// 列を指定してセルの値を取得する場合
ITreeGridColumn column = ...
cellValue = selectedNode.GetCellValue(column);
cellValue = selectedNode.GetCellValueString(column);
// すべてのセルの値を文字列として取得します
var cellValues = selectedNode.GetCellDisplayValues();
}
}
また、選択されているセルの値のみ取得したい場合はITreeGridNode
オブジェクトのGetSelectedCells
メソッドを用いて取得することもできます。
public void GetSelectedCellValue(ICommandContext c, ICommandParams p)
{
ITreeGrid treeGrid = c.App.Workspace.CurrentEditor as ITreeGrid;
if (treeGrid == null) return;
// 選択されているノードを取得します
var selectedNodes = treeGrid.GetSelectedNodes();
foreach(ITreeGridNode selectedNode in selectedNodes)
{
// 選択されているセルを取得します
var selectedCells = selectedNode.GetSelectedCells();
foreach(ITreeGridCell selectedCell in selectedCells)
{
// セルの値を取得します
var cellValue = selectedCell.GetValue();
c.App.Output.WriteLine("sample", $"セルの値 : {cellValue}");
}
}
}