实现winform树形模板数据库动态绑定的操作
实现效果:
数据库表结构:
DEP | TEMPLATE_PART | TEMPLATE_NAME | DISEASE_TYPE | HOSPITAL_CODE |
CT | 腹部 | 上腹部CT平扫+增强扫描未见明显异常。 | 正常 | 888888 |
CT | 腹部 | 右侧嗜铬细胞瘤可能请结合临床实验室 | 肿瘤肾上腺 | 888888 |
CT | 脊柱 | L5/S1椎间盘向后正中轻度膨出。 | 退形性变 | 888888 |
CT | 头颅 | 筛窦骨折 | 骨折 | 888888 |
CT | 血管造影 | CTA示左颈总动脉起始部狭窄(软斑块形成)。 | 退行性变 | 888888 |
CT | 脊柱 | 双侧骶髂骨、L3-L5椎体及附件混合性骨破坏改变(以成骨为主),以转瘤首先考虑,建议进 | 肿瘤 | 888888 |
CT | 胸部 | 纵隔淋巴瘤 | 纵隔疾病 | 888888 |
CT | 血管造影 | 提示两侧下肢动脉斑块形成伴管腔狭窄(以左侧股动脉为著)。 | 退行性变 | 888888 |
1.绑定根结点
///
/// 根结点
///
private void buildRIStree(string _dep)
{
try
{
template.DEP = _dep;
template.HOSPITAL_CODE = RisSetup_Class.GetINI("RIS_Single_setup", "HospitalCode", "rissetup.ini", Environment.CurrentDirectory.ToString());
dep = _dep;
DataTable dt_resource = ptb.get_REPORT_TEMPLATE(template);
DataTable dtt = new DataTable();
dtt = dt_resource.Copy();
tree_reporttemplate.Nodes.Clear();
for (int i = 0; i < dtt.Rows.Count; i++)
{
TreeNode dd = new TreeNode();
DataView dv = new DataView(dt_resource);
dtt = dv.ToTable(true, "template_part"); //去重
dd.Text = dtt.Rows[i]["template_part"].ToString();
bulidTreeDengjipart(dd, dt_resource);
tree_reporttemplate.Nodes.Add(dd);
tree_reporttemplate.ImageList = imageList1;
tree_reporttemplate.ImageIndex = tree_reporttemplate.SelectedImageIndex = 2;
}
}
catch (Exception ex)
{
flog_Class.WriteErrFlog("根结点" + ex.Message, errlog_position);
}
}
2.绑定二级结点
///
/// 二级结点
///
///
public void bulidTreeDengjipart(TreeNode nodetemplate_part, DataTable dt_resource)
{
try
{
DataTable dtt = new DataTable();
dtt = dt_resource.Clone();
DataRow[] rows = dt_resource.Select("TEMPLATE_PART='" + nodetemplate_part.Text + "'");
foreach (DataRow row in rows) // 将查询的结果添加到dt中;
{
dtt.Rows.Add(row.ItemArray);
}
//DataTable dt = ptb.get_REPORT_TEMPLATE_disease_type(template);
for (int i = 0; i < dtt.Rows.Count; i++)
{
TreeNode dd = new TreeNode();
DataView dv = new DataView(dtt);
dtt = dv.ToTable(true, "disease_type"); //去重
dd.Text = dtt.Rows[i]["disease_type"].ToString();
bulidTreeChildPart(dd, nodetemplate_part.Text, dt_resource);
nodetemplate_part.Nodes.Add(dd);
nodetemplate_part.ImageIndex = nodetemplate_part.SelectedImageIndex = 1;
}
}
catch (Exception ex)
{
flog_Class.WriteErrFlog("二级结点" + ex.Message, errlog_position);
}
}
3.绑定三级结点
///
/// 三级结点
///
///
///
public void bulidTreeChildPart(TreeNode disease_type, string _template_part, DataTable dt_resource)
{
try
{
DataTable dtt = new DataTable();
dtt = dt_resource.Clone();
DataRow[] rows = dt_resource.Select("TEMPLATE_PART='" + _template_part + "' and disease_type='" + disease_type.Text + "'");
foreach (DataRow row in rows) // 将查询的结果添加到dt中;
{
dtt.Rows.Add(row.ItemArray);
}
//DataTable dt = ptb.get_REPORT_TEMPLATE_TEMPLATE_NAME(template);
for (int i = 0; i < dtt.Rows.Count; i++)
{
TreeNode dd = new TreeNode();
DataView dv = new DataView(dtt);
dtt = dv.ToTable(true, "TEMPLATE_NAME"); //去重
dd.Text = dtt.Rows[i]["TEMPLATE_NAME"].ToString();
disease_type.Nodes.Add(dd);
disease_type.ImageIndex = disease_type.SelectedImageIndex = 0;
}
}
catch (Exception ex)
{
flog_Class.WriteErrFlog("三级结点" + ex.Message, errlog_position);
}
}