如何通过数据集循环特定行并设置为树视图

本文关键字:设置 视图 何通过 数据集 循环 | 更新日期: 2023-09-27 18:34:49

我想遍历每个数据行并检查 pid 的值,直到它得到 0 或空值或空值......下面是我的代码

if (!string.IsNullOrEmpty(pIDstr))
{
    int patientID = Convert.ToInt32(pID);
    //string connection = System.Configuration.ConfigurationManager.ConnectionStrings["connectionString"].ConnectionString;
    string sqlquery = "SELECT * FROM [MyDatabase].[dbo].[PatExam] where PId = '" + patientID + "'";
    string connection = System.Configuration.ConfigurationManager.ConnectionStrings["connectionString"].ConnectionString;
    using(SqlConnection conn = new SqlConnection(connection))
    {
        //SqlConnection conn = new SqlConnection(con);
        DataSet ds;
        ds = new DataSet();
        SqlDataAdapter cmpatientexam;
        conn.Open();
        cmpatientexam = new SqlDataAdapter(sqlquery, conn);
        cmpatientexam.Fill(ds, "PatientExam");
        foreach (DataRow patrow in ds.Tables["PatientExam"].Rows)
        {
                TreeNode tvpatexam = new TreeNode();
                tvpatexam.Text = patrow["PId"].ToString();
                TreeView1.Nodes.Add(tvpatexam);
                for //loop for checking all the patrow["PId"] value
                {
                    TreeNode childtvpatexam = new TreeNode();
                    childtvpatexam.Text = patrow["Exam"].ToString();
                    tvpatexam.ChildNodes.Add(childtvpatexam);
                }
            //TreeView1.Nodes.Add(tvpatexam);
        }

        ds.Dispose();
        cmpatientexam.Dispose();
        conn.Close();
        conn.Dispose();
    }
}

这些怎么可能,任何人都可以发送代码...多谢

我的数据库表 PatExam 包含以下值

PId     Exam
1004    firstexam
1004    secondexam
1004    thridexam
1004    fourthexam
所以我希望 1004 作为

我的父节点,并将 1004 的所有考试值作为树视图中的子节点......

怎么可能?

如何通过数据集循环特定行并设置为树视图

要为每个父节点添加子节点,请尝试以下操作

TreeNode pidNode = new TreeNode();
pidNode.Text = PIDstr;
foreach (DataRow patrow in ds.Tables["PatientExam"].Rows)
{
    TreeNode examType = new TreeNode();
    examType.Text = patrow["Exam"].ToString();
    pidNode.Nodes.Add(examType);
}
TreeView1.Nodes.add(pidNode);

无需检查Null0值 - 不确定您在问什么。

更新

如果重复添加节点;则意味着用于生成节点列表的操作是重复的。 您可以使用TreeView1.Nodes.Clear()删除所有节点,也可以检查特定节点是否存在。

要删除所有节点,请尝试类似

TreeView1.Nodes.Clear();

要删除特定节点并刷新其内容,请尝试在重新填充节点之前执行类似操作的操作。

TreeNode node = TreeView1.Nodes.FirstOrDefault(p=>p.Text == PIDstr);
TreeView1.Nodes.Remove(node);