メインコンテンツまでスキップ

ツリーグリッド要素を取得する

ツリーグリッドに対する操作はITreeGridオブジェクトから取得できるITreeGridNodeITreeGridColumnITreeGridCellオブジェクトを用います。

ツリーグリッドの行を取得する

すべての行を取得する例です。

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}");
}
}
}