在代码中,可以获取并更改 TreeList 单元格中的编辑值、以及获取其显示文本。 此主题介绍了可以用于执行这些操作的方法。
获取和设置单元格取值概述
要在代码中获取和设置单元格取值,则使用由 TreeListNode 类提供的方法:
TreeListNode 成员 | 说明 |
---|---|
TreeListNode.Item | 获取或设置特定单元格的编辑值。 |
TreeListNode.GetValue | 返回特定单元格的编辑值。 |
TreeListNode.GetDisplayText | 返回特定单元格的显示值。 显示值是编辑值的以特定方式设置格式的文本表示形式。 |
TreeListNode.SetValue | 更改特定单元格的编辑值。 |
在获取/更改节点的单元格之前,有多种取得节点对象的方式。 请参阅 成员表: 节点 主题查看可以用于获取节点引用的公共方法。
上表中列出的方法需要一个列标识符作为参数。 下面的小节描述了这些方法所支持的列标识符。
列标识符
几种对象都可以被用作列标识符。 它们是:
- 表示所需列的 TreeListColumn 对象。
- 所需列的 TreeListColumn.FieldName 属性值。
- 所需列的 TreeListColumn.AbsoluteIndex 属性值。
- 对应于所需列的 System.Data.DataColumn 对象 (如果 TreeList.DataSource 通过 System.Data.DataView 或 System.Data.DataTable 数据源表示)。
下列代码可以用于根据字段名称获取 TreeListColumn 对象。 我们假设有一个列被绑定到了“Budget”字段。 XtraTreeList 控件的 TreeList.Columns 属性被用于访问该列。
C# | 复制代码 |
---|---|
TreeListColumn columnID1 = treeList1.Columns["Budget"]; // Get a cell's value in the first root node. object cellValue1 = treeList1.Nodes[0][columnID1]; |
Visual Basic | 复制代码 |
---|---|
Dim columnID1 As TreeListColumn = TreeList1.Columns("Budget") ' Get a cell's value in the first root node. Dim cellValue1 As Object = TreeList1.Nodes(0)(columnID1) |
字段名是把列绑定到数据源字段的字符串。 举例来说,当根据 System.Data.DataTable 对象装载树状列表时,根据数据源字段名自动初始化 TreeListColumn.FieldName。
C# | 复制代码 |
---|---|
string columnID2 = "Budget"; // Get the display text of the focused node's cell string cellText = treeList1.FocusedNode.GetDisplayText(columnID2); |
Visual Basic | 复制代码 |
---|---|
Dim columnID2 As String = "Budget" ' Get the display text of the focused node's cell. Dim cellText As String = TreeList1.FocusedNode.GetDisplayText(columnID2) |
绝对索引号是列集合中的列的位置。 下列代码演示了如何为“Budget”列获取该取值。
C# | 复制代码 |
---|---|
int columnID3 = treeList1.Columns["Budget"].AbsoluteIndex; // Get a cell's value in the first root node. object cellValue = treeList1.Nodes[0].GetValue(columnID3); |
Visual Basic | 复制代码 |
---|---|
Dim columnID3 As Integer= TreeList1.Columns("Budget").AbsoluteIndex ' Get a cell's value in the first root node. Dim cellValue As Object = TreeList1.Nodes(0).GetValue(columnID3) |
C# | 复制代码 |
---|---|
DataColumn columnID4 = dataView.Table.Columns["DB_FieldName"]; // Set a cell's value. object newCellValue; treeList1.Nodes[0].SetValue(columnID4, newCellValue); |
Visual Basic | 复制代码 |
---|---|
DataColumn columnID4 = dataView.Table.Columns("DB_FieldName"); ' Set a cell's value. Dim newCellValue As Object TreeList1.Nodes(0).SetValue(columnID4, newCellValue) |
示例
下面的示例访问了树状列表的根结点,并修改了“Sales and Marketing”部门的“Budget”列值。 TreeListColumn 的实例被用作列标识符 (在 TreeListNode.GetDisplayText、TreeListNode.GetValue 和 TreeListNode.SetValue 方法中)。
C# | 复制代码 |
---|---|
IEnumerator en = treeList1.Nodes.GetEnumerator(); TreeListColumn columnDep = treeList1.Columns["Department"]; TreeListColumn columnBudget = treeList1.Columns["Budget"]; while (en.MoveNext()) { TreeListNode childNode = (TreeListNode)en.Current; if(childNode.GetDisplayText(columnDep) == "Sales and Marketing") { decimal newBudget = (decimal)childNode.GetValue(columnBudget) / 2; childNode.SetValue(columnBudget, newBudget); } } |
Visual Basic | 复制代码 |
---|---|
Dim en As IEnumerator = TreeList1.Nodes.GetEnumerator() Dim ColumnDep As TreeListColumn = TreeList1.Columns("Department") Dim ColumnBudget As TreeListColumn = TreeList1.Columns("Budget") While en.MoveNext() = True Dim ChildNode As TreeListNode = CType(en.Current, TreeListNode) If ChildNode.GetDisplayText(ColumnDep) = "Sales and Marketing" Then Dim NewBudget As Decimal = CType(ChildNode.GetValue(ColumnBudget), Decimal) / 2 ChildNode.SetValue(ColumnBudget, NewBudget) End If End While |