【发布时间】:2014-09-06 22:55:27
【问题描述】:
我有两列的表格:
+-------------+------------+
| Level | Desc |
+-------------+------------+
| 1 | a |
+-------------+------------+
| 2 | b |
+-------------+------------+
| 2 | c |
+-------------+------------+
| 1 | d |
+-------------+------------+
| 2 | e |
+-------------+------------+
| 2 | f |
+-------------+------------+
| 3 | g |
+-------------+------------+
| 1 | h |
+-------------+------------+
| 1 | i |
+-------------+------------+
| 2 | j |
+-------------+------------+
| 2 | k |
+-------------+------------+
我需要根据 Level 列在 XtraTreeview 中用两列创建此数据的显示,它应该是这样的:
- 1 a
-- 2 b
-- 2 c
-1 d
-- 2 e
-- 2 f
-- 3 g
-1 h
-1 i
-- 2 j
-- 2 k
因此,级别列代表节点。 1级是主节点,2级是1级的子节点,3级是2级的子节点,4级是3级的子节点…… 我知道当有固定数量的节点和子节点时如何填充 Xtratreeview,但在这种情况下不知道如何填充 1 个节点包含 3、4 个或更多子节点的位置。
到目前为止我已经这样做了:
填充树视图:
DataTable table = new DataTable();
table.Columns.Add("Level");
table.Columns.Add("Data");
table.Rows.Add(1, "a");
table.Rows.Add(2, "b");
table.Rows.Add(2, "c");
table.Rows.Add(1, "d");
table.Rows.Add(2, "e");
table.Rows.Add(2, "f");
table.Rows.Add(3, "g");
table.Rows.Add(4, "z");
table.Rows.Add(5, "x");
table.Rows.Add(2, "h");
table.Rows.Add(3, "i");
table.Rows.Add(1, "j");
table.Rows.Add(2, "k");
TreeListNode rootNode = null;
for (int i = 0; i < table.Rows.Count; i++)
{
tl.BeginUnboundLoad();
TreeListNode parentForRootNodes = null;
if (table.Rows[i][0].ToString().Equals("1"))
{
rootNode = tl.AppendNode(new object[] { (string)table.Rows[i][1] }, parentForRootNodes);
}
if (table.Rows[i][0].ToString().Equals("2"))
{
tl.AppendNode(new object[] { (string)table.Rows[i][1] }, rootNode);
}
tl.EndUnboundLoad();
}
创建列:
private void CreateColumns2(TreeList tl)
{
tl.BeginUpdate();
tl.Columns.Add();
tl.Columns[0].Caption = "Level";
tl.Columns[0].VisibleIndex = 0;
tl.Columns.Add();
tl.Columns[1].Caption = "Desc";
tl.Columns[1].VisibleIndex = 1;
tl.Columns.Add();
tl.EndUpdate();
}
【问题讨论】:
-
对我来说就像家庭作业。你都尝试了些什么?给我们看一些代码。
-
为什么闻起来像作业?作业通常是一个抽象的问题。这个问题指的是一种特定的技术,所以听起来它有特定的目的。
-
我用我为填充树视图而编写的代码编辑了我的问题。正如我所解释的,问题是没有 parentid 列。级别列代表节点。 1级为主节点,2级为1级子节点,3级为2级子节点,4级为3级子节点...
-
编辑您的 DataRows 以获得父 ID,您应该没问题。您可以使用数据源而不是您在此处显示的未绑定加载方法(更简单..)
-
无法编辑表并添加另一列,因为我正在访问不是由我创建的已经完成的表 :( 我已经为经典 TreeView 解决了同样的问题,它工作正常,但我不知道如何将相同的解决方案应用于 XtraTreeView。
标签: c# xtratreelist