今週の初めまでに、TreeView に子が表示されないという問題がありました。すべてが再帰によって解決されました。ただし、予期しない新しい問題が発生しました。私が使用しているメソッドは、特定の DataTables で重複したノードを取得しています。
2 つの列のこの DataTable を持つ:
ParentOT ChildOT
20120601 20120602
20120601 20120603
20120601 20120604
20120601 20120611
20120601 20120612
20120602 20120605
20120602 20120606
20120602 20120607
20120602 20120608
20120602 20120610
20120603 20120607
20120603 20120608
20120603 20120609
そのツリービューを表示しようとすると、正しいツリービューが表示されますが、5 回連続して表示されます (parentOT レコードで親が親として表示される回数)。
メソッドは次のとおりです。
private TreeView cargarOtPadres(TreeView trv, int otPadre, DataTable datos)
{
if (datos.Rows.Count > 0)
{
foreach (DataRow dr in datos.Select("OTPadre="+ otPadre))
{
TreeNode nodoPadre = new TreeNode();
nodoPadre.Text = dr["OTPadre"].ToString();
trv.Nodes.Add(nodoPadre);
cargarSubOts(ref nodoPadre, int.Parse(dr["OTPadre"].ToString()), datos);
}
}
return trv;
}
private void cargarSubOts(ref TreeNode nodoPadre, int otPadre, DataTable datos)
{
DataRow[] otHijas = datos.Select("OTPadre=" + otPadre);
foreach (DataRow drow in otHijas)
{
TreeNode hija = new TreeNode();
hija.Text = drow["OTHija"].ToString();
nodoPadre.Nodes.Add(hija);
cargarSubOts(ref hija, int.Parse(drow["OTHija"].ToString()), datos);
}
}
1 つの優れた親が 1 回だけ表示されるテーブルでは、うまく機能します。TreeView が複製されないようにするにはどうすればよいですか??