//添加公司下第一级组
private void AddChildNodes(TreeNode tn)
{
int op_id = this.getCompanyID(tn.Value.ToString()); //获取根节点ID
treedata = tree.getTreeViewRootByOperatorID(op_id); //获取根节点下所有直属组
for (int i = 0; i < treedata.TreeViewTB.Count; i++)
{
TreeNode ctn = new TreeNode();
ctn.Text = treedata.TreeViewTB.Rows[i]["group_name"].ToString();
ctn.Value = "G" + treedata.TreeViewTB.Rows[i]["group_id"].ToString();
int group_id = int.Parse(treedata.TreeViewTB.Rows[i]["group_id"].ToString());
tn.ChildNodes.Add(ctn);
int statue = int.Parse(treedata.TreeViewTB.Rows[i]["statue"].ToString());
if (statue == 0 || statue.Equals("0"))
{
this.AddGrandchild(ctn, group_id); //status=0时表示该节点为叶节点
}
else if (statue == 1 || statue.Equals("1"))
{
this.AddOtherChildNote(ctn, group_id, op_id); //status=1时表示该节点下面有子节点
this.AddGrandchild(ctn, group_id); //添加完子节点后添加该组内所有数据
}
}
}
//添加最后一级组内所有车辆
private void AddGrandchild(TreeNode gc, int group_id)
{
IGU.BusinessFacade.Device device = new IGU.BusinessFacade.Device();
IGU.Data.TransportData transportdata = new IGU.Data.TransportData();
transportdata = device.getTransport(group_id); //通过调用逻辑层的方法获取组内所有数据信息
if (transportdata.TransportTB.Count > 0)
{
for (int i = 0; i < transportdata.TransportTB.Count; i++)
{
TreeNode ctn = new TreeNode();
ctn.Text = transportdata.TransportTB.Rows[i]["transport_paizhao"].ToString();
//为ID加上一个前缀,这样取的时候就容易判断该ID是公司OR组OR车辆
ctn.Value = "T" + transportdata.TransportTB.Rows[i]["transport_id"].ToString();
gc.ChildNodes.Add(ctn);
}
}
}
//添加下一级组
private void AddOtherChildNote(TreeNode tc, int up_id, int op_id)
{
IGU.Data.TreeViewData treeviewdata = new IGU.Data.TreeViewData();
treeviewdata = tree.getTreeViewGroupByOperator(up_id, op_id);
if (treeviewdata.TreeViewTB.Count > 0)
{
for (int i = 0; i < treeviewdata.TreeViewTB.Count; i++)
{
TreeNode tnc = new TreeNode();
tnc.Text = treeviewdata.TreeViewTB.Rows[i]["group_name"].ToString();
tnc.Value = "G" + treeviewdata.TreeViewTB.Rows[i]["group_id"].ToString();
tc.ChildNodes.Add(tnc);
int group_id = int.Parse(treeviewdata.TreeViewTB.Rows[i]["group_id"].ToString());
int statue = int.Parse(treeviewdata.TreeViewTB.Rows[i]["statue"].ToString());
if (statue == 0 || statue.Equals("0"))
{
this.AddGrandchild(tnc, group_id);
}
else if (statue == 1 || statue.Equals("1"))
{
this.AddOtherChildNote(tnc, group_id, op_id);
this.AddGrandchild(tnc, group_id);
}
}
}
}
//获取Treeview前ChectBox内多个ID
public string GetAllNodeText(TreeNodeCollection tnc)
{
foreach (TreeNode node in tnc)
{
if (node.ChildNodes.Count != 0)
{
GetAllNodeText(node.ChildNodes);
}
if (node.Checked == true)
{
transport = transport + node.Value;
}
}
return transport;
}
//把String转换Int 区分不同组或车辆的ID
public int getCompanyID(string sub_ID)
{
int count = (sub_ID).Length;
string left = (sub_ID).Substring(1, count - 1);
int op_id = Convert.ToInt32(left);
return op_id;
}
//checkBox事件
protected void TreeView1_TreeNodeCheckChanged(object sender, TreeNodeEventArgs e)
{
SetChildChecked(e.Node);
}
//便利选中的CheckBox
private void SetChildChecked(TreeNode parentNode)
{
foreach (TreeNode node in parentNode.ChildNodes)
{
node.Checked = parentNode.Checked;
if (node.ChildNodes.Count > 0)
{
SetChildChecked(node);
}
}
}
//JS事件
TreeView1.Attributes.Add("onclick", "postBackByObject()"); //当父结点被选中的时候子节点自动选择上,放在Page_Load中
//ASP页面的head加上runat="server"
<head runat="server">