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

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

کاربر سایت

mamooshgol

عضویت از 1394/06/16

tree view با checkbox

  • چهارشنبه 10 بهمن 1397
  • 09:16
تشکر میکنم

سلام 

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

پاسخ های این پرسش

تعداد پاسخ ها : 2 پاسخ
کاربر سایت

mohammadd

عضویت از 1395/12/08

  • چهارشنبه 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);
                    }
                }
}

کاربر سایت

mohammadd

عضویت از 1395/12/08

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

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

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

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)