62,074
社区成员
发帖
与我相关
我的任务
分享
获取数据集
private DataSet GetTableInfo()
{
DataTable table1 = ProjectBLL.GetProjectInfo(); //查询所有工程信息
table1.TableName = "pro";
string str_sql = "select * from Table_GaugeDate";
string str_sql1 = "select * from Table_GuageDateTime";
查询所有测期信息
DataTable table2 = Unlity.OledbHelper.ExecuteDataTable(Unlity.OledbHelper.str_connectionString, CommandType.Text, str_sql, null);
table2.TableName = "gua";
查询所有的观测日期信息
DataTable table3 = Unlity.OledbHelper.ExecuteDataTable(Unlity.OledbHelper.str_connectionString, CommandType.Text, str_sql1, null);
table3.TableName = "gut";
DataSet ds = new DataSet();
ds.Tables.Add(table1.Copy());
ds.Tables.Add(table2.Copy());
ds.Tables.Add(table3.Copy());
//添加关系
//MessageBox.Show("" + ds.Tables.Count);
DataRelation dr = new DataRelation("ProjectGuaageDate", ds.Tables["pro"].Columns["Table_Project_Id"], ds.Tables["gua"].Columns["Table_Project_Id"], false);
ds.Relations.Add(dr);
//DataColumn[] dc = new DataColumn[2] { ds.Tables["gua"].Columns["Table_Project_Id"], ds.Tables["gua"].Columns["Table_GaugeDate_Id"] };
//DataColumn[] dc1 = new DataColumn[2] { ds.Tables["gut"].Columns["Table_Project_Id"], ds.Tables["gut"].Columns["Table_GaugeDate_Id"] };
DataRelation dr1 = new DataRelation("GuageDateGuageDateTime", ds.Tables["gua"].Columns["Table_GaugeDate_Id"], ds.Tables["gut"].Columns["Table_GaugeDate_Id"], false);
ds.Relations.Add(dr1);
return ds;
}
/// <summary>
/// 绑定数据
/// </summary>
public void TreeView()
{
tv1.Nodes.Clear();
DataSet ds = GetTableInfo();
TreeNode pro_node, gua_node, gut_node;
for (int i = 0; i < ds.Tables["pro"].Rows.Count; i++) //获取所有的工程行数
{
pro_node = new TreeNode();
pro_node.Text = ds.Tables["pro"].Rows[i].ItemArray["工程名"].ToString();
pro_node.Tag = ds.Tables["pro"].Rows[i].ItemArray["工程编号"].ToString();
tv1.Nodes.Add(pro_node);
//获取工程对应的测期信息
DataRow[] drGuage = ds.Tables["pro"].Rows[i].GetChildRows("ProjectGuaageDate");
for (int j = 0; j < drGuage.Length; j++)
{
gua_node = new TreeNode();
if (Convert.ToString(drGuage[j].ItemArray[0]) == "")
{
break;
}
gua_node.Text = drGuage[j].ItemArray["期数"].ToString();
gua_node.Tag = drGuage[j].ItemArray["编号"].ToString();
pro_node.Nodes.Add(gua_node);
//获取测期对应的观测日期信息
DataRow[] drGuagt = ds.Tables["gua"].Rows[j].GetChildRows("GuageDateGuageDateTime");
for (int s = 0; s < drGuagt.Length; s++)
{
gut_node = new TreeNode();
if (Convert.ToString(drGuagt[s].ItemArray[0]) == "")
{
break;
}
gut_node.Text = drGuagt[s].ItemArray["观测日期"].ToString()
gut_node.Tag = drGuagt[s].ItemArray["编号"].ToString();
gua_node.Nodes.Add(gut_node);
}
}
tv1.SelectedNode = tv1.Nodes[0]; //窗体加载时默认选择第一个节点
}
}
这段代码是我改进后的代码,写的不好还请见谅。
如果我有这样的数据
工程:
编号:30,31
名称:测试工程,测试工程2
测期:
编号:1,2,3
期数:第一期,第二期,第一期
所属工程:测试工程,测试工程,测试工程2
观测日期:
编号:a1,a2,a3
期数:1,2,3
日期:2010-1-15,2010-1-16,2010-1-17
想实现的效果:
测试工程
第一期
2010-1-15
第二期
2010-1-16
测试工程2
第一期
2010-1-17