读书人

小妹求救!利用DataTable数据在TreeVi

发布时间: 2012-01-15 22:57:49 作者: rapoo

小妹求救!利用DataTable数据在TreeView里显示。
我把现有的数据存放到两个DataTable表里(如下),

表名:CarTable
Num CarID GroupID CarNum CarMotorman
1 1 1 京A3352 张三
2 3 1 京B4321 李四
3 4 3 京C7680 王五
4 5 1 京F3360 李六

表名: GroupTable
Num GroupID GroupName
1 1 车辆一组
2 3 车辆三组

我想把这些表里的数据按照车辆组来分类,显示在一个
TreeView里,如何显示。请各位师哥代码明示。

我想显示的格式如下:

车辆一组
京A3352
京B4321
京F3360
车辆二组
京C7680

小妹刚刚入门请多多指教!

[解决办法]
/// <summary>
/// Form初始化
/// </summary>
private void FCArea_Load(object sender, EventArgs e)
{
try
{
FormatGridMultilanguage();
BaseNode = new TreeNode();
BaseNode.Text = ResourceFactory.GetMultilanguage( "AREA ");
BaseNode.Name = "0 ";
treeView1.Nodes.Add(BaseNode);
ErmsDB ermsdb = new ErmsDB( "ConnectionAlarm ");
dtSite = ermsdb.FetchTable( "TArea ");
dtnew = ermsdb.FetchTableFrame( "TArea ");
dtnew.Rows.Add();
if (dtSite.Rows.Count > 0)
{
AddTree(int.Parse(BaseNode.Name), BaseNode);
txtAreaID.Text = "0 ";
txtAreaName.Text = ResourceFactory.GetMultilanguage( "AREA ");
txtAreaDes.Text = " ";
txtPAreaID.Text = " ";
this.btnSave.Enabled = false;
this.ckBoxFix.Enabled = false;
this.dtpFixStartTime.Enabled = false;
this.dtpFixEndTime.Enabled = false;
}
this.addCToolStripMenuItem.Enabled = true;
this.updateToolStripMenuItem.Enabled = true;
this.removeToolStripMenuItem.Enabled = true;

}
catch (Exception ex)
{
new Exception(ex.Message);

LogEntry logDb = new LogEntry();
Dictionary <string, object> errorInfo = new Dictionary <string, object> ();
errorInfo.Add( "DateTime ", DateTime.Now);
errorInfo.Add( "Exception Message ", ex.Message);
errorInfo.Add( "Operation ", this.Text + ResourceFactory.GetMultilanguage( "ERRORINITIAL "));


logDb.ExtendedProperties = errorInfo;
logDb.Categories.Add( "Error ");
Logger.Write(logDb);
blnInitialSuccess = false;
}
}

/// <summary>
/// 递归添加树结点
/// </summary>
public void AddTree(int ParentID, TreeNode pNode)
{
try
{
TreeNode tn1 = new TreeNode();
ErmsDB ermsdb = new ErmsDB( "ConnectionAlarm ");
dtSite = ermsdb.FetchTable( "TArea ");
DataView dv = new DataView(dtSite);
dv.RowFilter = "[ParentAreaID] = " + ParentID;
foreach (DataRowView Row in dv)
{
if (pNode == null)
{
tn1.Text = Row[ "AreaName "].ToString();
tn1.Name = Row[ "AreaID "].ToString();
treeView1.Nodes.Add(tn1);
AddTree(Int32.Parse(Row[ "AreaID "].ToString()), tn1);
}
else
{
TreeNode tn2 = new TreeNode();
tn2.Text = Row[ "AreaName "].ToString();
tn2.Name = Row[ "AreaID "].ToString();
pNode.Nodes.Add(tn2);
AddTree(Int32.Parse(Row[ "AreaID "].ToString()), tn2);
}
}
}

这种是直接调用递归算法加载tree


wo说明一下 AreaID 关联 ParentAreaID
他们是父子关系
你参考一下
下班了,你自己改改

[解决办法]

for(int i=0;i <GroupTable.Rows.count;i++)
{
string int_num= GroupTable.Rows[i][ "GroupID "].ToString()
TreeNode tn = new TreeNode(GroupTable.Rows[i][ "GroupName "].ToString());
TreeView1.nodes.add(tn);
for(int j=0;j <CarTable.Rows.count;j++)
{
if(int_num==CarTable.Rows[j][ "GroupID "].tostring())
{
TreeNode temp_tn = new TreeNode(CarTable.Rows[j][ "CarNum "].ToString());
TreeView1.nodes.add(tn);
TreeView1.nodes[i].nodes.add(temp_tn);
}
}
}

读书人网 >C#

热点推荐