我把现有的数据存放到两个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小妹刚刚入门请多多指教!
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小妹刚刚入门请多多指教!
try
{
temp = new DataFactory("AlarmSystem");
this.areaTable = temp.FetchTable("TArea");
}
catch (DbException)
{
//初始化失败,请检查数据源是否正常工作
throw;
} //根节点,只能有一个根节点,即只有一笔记录的ParentAreaID为0
TreeNode rootNode = new TreeNode(); if (this.areaTable.Rows.Count == 0) // 表为空,就创建一个根节点
{
//创建根节点,设置其ParentAreaID为0,更新到数据库中
rootNode = new TreeNode("Default root");
rootNode.Name = "-1";
rootNode.Tag = new AreaExtensionInfo(0, ""); DataTable newTable = this.areaTable.Clone();
DataRow newRow = newTable.NewRow();
newTable.Columns.Remove("AreaID");
newRow["AreaName"] = rootNode.Text;
newRow["ParentAreaID"] = 0;
newTable.Rows.Add(newRow);
newTable.PrimaryKey = new DataColumn[] { };
//可能有bug
try
{
temp = new DataFactory("AlarmSystem");
ArrayList list = temp.UpdateData("ProcInsertTArea", this.areaColumnName, newTable, true); this.rootNodeAreaId = Convert.ToInt32(list[0]);
rootNode.Name = list[0].ToString();
}
catch (DbException)
{
throw;
}
}
else
{
// 根据存储在数据库中用户设置的根节点信息创建根节点
DataView rootRow = new DataView(this.areaTable);
rootRow.RowFilter = "ParentAreaID = 0";
// 唯一的根节点存在
if (rootRow.Count == 1)
{
foreach (DataRowView row in rootRow)
{
rootNode.Name = row["AreaID"].ToString();
this.rootNodeAreaId = Convert.ToInt32(row["AreaID"]);
rootNode.Text = row["AreaName"].ToString();
rootNode.Tag = new AreaExtensionInfo(row["ParentAreaID"], row["Description"]);
}
}
else
{
// 数据库信息错误
throw new DBRecordException("DataTable TArea record error");
}
} treeViewArea.Nodes.Add(rootNode);
BuildTree(rootNode);
rootNode.Expand();
// 把属于当前Node中的Tag加入到ListView中
ShowAlarmTagInListView(rootNode);
我也是从数据库生成tree
这种是有根节点的
{
treenode groupnode=new treenode();
groupnod.text=group["groupname"];
treeview.nods.add(groupnode);datarow[] cars= CarTable.filter="GroupID ="+group["GroupID"];
foreach(datarow car in cars)
{
treenode carnode=new treenode();
carnode.text=car["CarNum"];
groupnode.nods.add(carnode);
}}
*****************************************************************************
欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码) 最新版本:20070212http://www.cnblogs.com/feiyun0112/archive/2006/09/20/509783.html
改为
datarow[] cars= CarTable.select("GroupID ="+group["GroupID"]);
/// 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);
}
}
}
不用写大量代码