我在我的項目中使用TreeView來從數據庫中分層顯示我的數據。對於少量數據,比如說500個條目,它工作正常。但是,如果超過了這些條目數量,則裝入時間過長。我必須填充大量數據(比如說2500個條目)。我有一個名爲「tRegistered」的表,其中我將「Date」列綁定爲treeview父節點。再次從同一張表中,我將「用戶」列綁定爲treeview節點。我的目標是以分層方式顯示最近7天的所有註冊用戶。請幫助我如何繼續。Treeview加載問題
我的代碼是:
private void PopulateTreeView()
{
treeView1.Nodes.Clear();
SqlDataAdapter daPatient = new SqlDataAdapter("SELECT TOP 100 PERCENT pId, pDate, pName FROM tRegistered WHERE pDate >= DATEADD(day,-7, GETDATE())", con);
SqlDataAdapter daDate = new SqlDataAdapter("SELECT TOP 100 PERCENT pDate FROM tRegistered
WHERE pDate >= DATEADD(day, - 7, GETDATE()))
GROUP BY pDate
ORDER BY pDate DESC", con);
DataSet ds = new DataSet();
daPatient.Fill(ds, "tRegistered");
daDate.Fill(ds, "tRegistered");
//Add root node
TreeNode root = new TreeNode("Registered");
treeView1.Nodes.Add(root); //Hard code
ds.Relations.Add("Regsd", ds.Tables["tRegistered"].Columns["pDate"], ds.Tables["tRegistered"].Columns["pDate"]);
foreach (DataRow dr in ds.Tables["tRegistered"].Rows)
{
DateTime dt = Convert.ToDateTime(dr["pDate"]);
TreeNode tn = new TreeNode(String.Format("{0:dd-MMM-yyyy}", dt));
foreach (DataRow drChild in dr.GetChildRows("Regsd"))
{
TreeNode childTn = new TreeNode(drChild["pId"].ToString() + "- " + drChild["pName"].ToString());
childTn.Tag = drChild["pId"];
tn.Nodes.Add(childTn);
}
root.Nodes.Add(tn);
root.Expand();
}
}
完成後,首先調用樹視圖的BeginUpdate()方法,EndUpdate()。 – 2013-03-24 22:25:57