سلام
من گروهی از اطلاعات به صورت treeview از بانک اطلاعاتی bind میکنم . کاربر اون اون گروهی رو که میخواد تیک میزنه و ثبت میکنه مثلا 2 گروه انتخاب میکنه و ثبت میکنه. بعد واسه ویرایش که treeview رو می بینه باید اون 2 گروهی رو که ثبت کرده بوده ببینه چطوری این کارو باید کنم ؟ کدی هم که نوشتم اینه.ممنون میشم راهنماییم کنید.
نمیدونم جدولت چجوریه
به پدر فرزندی (Child , parent) یا نه به صورت دو یا چند جدول جدا از همه
راه کار : شما به دوتا تابع نیاز داری
تابع اول میاد اویل نود رو تیکش خورده باشه میزنه
بعد اگه این نود فرزند داشت یه نمونه از Treeview پاس میده به تابع دومی
تابع دومی میاد بررسی میکنه آیا نودی که داره میبینه تیکش خورده اگه خورده میزنه و دوباره خودشو فراخوانی میکنه و این روال رو خودش تا انتها ادامه میده
این برای حالتیه که یه جدول باشه
SqlDataAdapter da = new SqlDataAdapter("ProcName", con); DataSet ds = new DataSet(); da.Fill(ds); ds.Relations.Add("Childrows", ds.Tables[0].Columns["Id"], ds.Tables[0].Columns["ParentID"]); foreach (DataRow levelDataRow in ds.Tables[0].Rows) { if (string.IsNullOrEmpty(levelDataRow["ParentID"].ToString())) { TreeNode parentTreenode = new TreeNode(); parentTreenode.Text = levelDataRow["عنوان"].ToString(); parentTreenode.Value = levelDataRow["آیدی عنوان"].ToString(); GetCildRow(levelDataRow, parentTreenode); TreeView1.Nodes.Add(parentTreenode); } } con.Close();
private void GetCildRow(DataRow datarow, TreeNode treenode) //برای پرکردن زیر منو ها { DataRow[] childerows = datarow.GetChildRows("Childrows"); foreach (DataRow childerow in childerows) { TreeNode ChildeTreeNode = new TreeNode(); ChildeTreeNode.Text = childerow["Title"].ToString(); ChildeTreeNode.Value = childerow["Id"].ToString(); treenode.ChildNodes.Add(ChildeTreeNode); if (childerow.GetChildRows("Childrows").Length > 0) { GetCildRow(childerow, ChildeTreeNode); } } }
شما کافیه اینو یکم باهاش کار کنی تا دستت بیاد
و اینکه تو if هر دو تابع یه if ّزار اگه نود تیکش خورده تیکشو بزنه یعنی true کنه
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)