مرجع تخصصی برنامه نویسان

بزرگترین انجمن برنامه نویسان فارسی زبان

tree view با checkbox

چهارشنبه, 10 بهمن 1397 09:16

tree view با checkbox

سلام 

من گروهی از  اطلاعات به صورت treeview  از بانک اطلاعاتی bind میکنم . کاربر اون اون گروهی رو که میخواد تیک میزنه و ثبت میکنه مثلا 2 گروه انتخاب میکنه و ثبت میکنه. بعد واسه ویرایش که treeview رو می بینه باید اون 2 گروهی رو که ثبت کرده بوده ببینه چطوری این کارو باید کنم ؟ کدی هم که نوشتم اینه.ممنون میشم راهنماییم کنید.

چهارشنبه, 10 بهمن 1397 10:18

نمیدونم جدولت چجوریه

به پدر فرزندی (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);
                    }
                }
}

چهارشنبه, 10 بهمن 1397 10:19

شما کافیه اینو یکم باهاش کار کنی تا دستت بیاد

و  اینکه تو if هر دو تابع یه if ّزار اگه نود تیکش خورده تیکشو بزنه یعنی true کنه

ارسال پاسخ برای این تاپیک

ارسال پاسخ مخصوص اعضا سایت می باشد ! میتوانید با حساب کاربری خود وارد سایت شده یا ثبت نام کنید