要做一个部门管理的界面
客户要求是表格形式的,内容如下。
部门编码,部门名称,负责人,联系方式,人数。但我的困惑是,我的部门是分级次的,每人数要从末级的部门中统计。统计我可以解决。但是这种分级次的部门怎么在表格中显示呢。最好是这样。
部门A,部门名称,负责人,联系方式,人数。
部门A1,部门名称,负责人,联系方式,人数。
部门A2,部门名称,负责人,联系方式,人数。
部门A21,部门名称,负责人,联系方式,人数。
部门B,部门名称,负责人,联系方式,人数。
部门C,部门名称,负责人,联系方式,人数。类似一个树控件,但是要有很多列才可以。怎样能美观的实现呢??
客户要求是表格形式的,内容如下。
部门编码,部门名称,负责人,联系方式,人数。但我的困惑是,我的部门是分级次的,每人数要从末级的部门中统计。统计我可以解决。但是这种分级次的部门怎么在表格中显示呢。最好是这样。
部门A,部门名称,负责人,联系方式,人数。
部门A1,部门名称,负责人,联系方式,人数。
部门A2,部门名称,负责人,联系方式,人数。
部门A21,部门名称,负责人,联系方式,人数。
部门B,部门名称,负责人,联系方式,人数。
部门C,部门名称,负责人,联系方式,人数。类似一个树控件,但是要有很多列才可以。怎样能美观的实现呢??
左边是TreeView控件, 右边是DataGridView控件。
和你要求的一模一样的。另外可以自己做点东西。比如说在“部门A1”加点空格或者“-”啥的也可以。都很不错的
Create TABLE CateTable (
[CateID] [int] IDENTITY (1, 1) NOT NULL ,
[Product] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[RootID] [int] NOT NULL ,
[ParentID] [int] NOT NULL
)
GO程序//从数据库中读取数据
SqlConnection con = new SqlConnection("server=127.0.0.1\\sqlexpress;uid=sa;");
con.Open();
con.ChangeDatabase("STggggg");
SqlCommand cmd = new SqlCommand("select * from 产品树 where NodeType='f'", con);
//cmd.CommandType = CommandType.StoredProcedure;
SqlDataAdapter sda = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
try
{
sda.Fill(ds);
}
catch
{
}
finally
{
cmd = null;
con.Close();
}
//往TreeView中添加树节点
//添加根节点
TreeNode tn = new TreeNode();
tn.Text = "所有产品";
tn.Name = "0";//Name作为ID
tn.Tag = "0";//Tag作为RootID
tn.ImageIndex = 0;
tn.SelectedImageIndex = 0;
tv.Nodes.Add(tn);//该TreeView命名为tv
tv.SelectedNode = tv.TopNode;
//把其他节点加上去
if (ds != null)
{
foreach (DataRow dr in ds.Tables[0].Rows)
{
tn = new TreeNode();
tn.Text = dr["Product"].ToString();
tn.Name = dr["CateID"].ToString();//Name作为CateID
tn.Tag = dr["RootID"].ToString();//Tag作为RootID
tn.ImageIndex = 1;
tn.SelectedImageIndex = 1;
//判断是否为主节点
if (dr["CateID"].ToString() == dr["RootID"].ToString())
{
//主节点
tv.SelectedNode = tv.TopNode;
}
else
{
//其他节点
if (tv.SelectedNode.Name != dr["ParentID"].ToString())
{
TreeNode[] tn_temp = tv.Nodes.Find(dr["ParentID"].ToString(), true); //通过ParentID查找父节点
if (tn_temp.Length > 0)
{
tv.SelectedNode = tn_temp[0]; //选中查找到的节点
}
}
}
tv.SelectedNode.Nodes.Add(tn);
}
//tv.ExpandAll();//展开TreeView
tv.SelectedNode = tv.TopNode; //最顶端节点选中
}