首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

小妹求救!利用DataTable数据在TreeView里显示。该怎么处理

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

小妹求救!利用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);
}
}
}

热点排行