نمایش نتایج 1 تا 7 از 7

نام تاپیک: اطلاعات جدول در صورت وجود در TREEVIEW نود مربوطه تیک بخورد

  1. #1
    کاربر دائمی آواتار حسین.کاظمی
    تاریخ عضویت
    مرداد 1392
    محل زندگی
    Microsoft Visual Studio
    پست
    652

    اطلاعات جدول در صورت وجود در TREEVIEW نود مربوطه تیک بخورد

    با سلام به همه دوستان


    دوتا جدول دارم در یکیش ی سری اطلاعات درونش است و جدول دیگری که آیتم های آن به انتخاب کاربر از بین جدول اولی انتخاب شده را درون جدول دومی ریخته میشه+شماره شناسایی مشتری......
    حالا میخام توی برنامه وقتی بروی نام مشتری که درون دیتا گرید است کلیک بشه براساس شماره شناسایی مشتری، آیتم هایی که درون جدول دومی می باشد را درtreeview تیک بزند....(treeview ازجدول اولی پر شده) .....

    ساختارجدول بصورت عکس زیر است.....

    treeview.png


    یک پروژه قبلا داشتم برای حق دسترسی بود دقیقا همین کارا میکرد و از کدهای اونم استفاده کردم(کدهای زیر)ولی عمل نمیکنه و خطای خالی بودن پارامترها را میده.....


    void UserPermissions(int userID)
    {
    OleDbConnection connection = new OleDbConnection();
    connection.ConnectionString = _ConnectionString;
    OleDbCommand command =new OleDbCommand(@"SELECT * FROM tbl_Users_Persmissions WHERE id_user=@UserID AND permissionID=@PermissionID", connection);
    command.Parameters.Add(new OleDbParameter("@UserID", 0));
    command.Parameters.Add(new OleDbParameter("@PermissionID",0));
    connection.Open();

    foreach (TreeNode node in TREENODE.NODES)
    {
    command.Parameters["@UserID"].Value = userID;
    command.Parameters["@PermissionID"].Value = node;
    using (OleDbDataReader dr = command.ExecuteReader())
    {
    if (dr.HasRows)
    {
    node.Checked = true;
    }
    }


    foreach (TreeNode childNode in node.Parent.Parent.Nodes)
    {
    command.Parameters["@UserID"].Value = userID;
    command.Parameters["@PermissionID"].Value = childNode;
    using (OleDbDataReader dr = command.ExecuteReader())
    {
    if (dr.HasRows)
    {
    childNode.Checked = true;
    }
    }
    }




    }
    connection.Close();
    }




    نیاز به راهنمایی هاتون دارم..

    ممنون از همگی

  2. #2

    نقل قول: اطلاعات جدول در صورت وجود در TREEVIEW نود مربوطه تیک بخورد

    شما به ازای هر نود یک بار کوئری میزنید؟! درسته؟ و چطور treeview را پر میکنید؟
    آخرین ویرایش به وسیله Mahmoud.Afrad : جمعه 29 اردیبهشت 1396 در 20:47 عصر

  3. #3
    کاربر دائمی آواتار حسین.کاظمی
    تاریخ عضویت
    مرداد 1392
    محل زندگی
    Microsoft Visual Studio
    پست
    652

    نقل قول: اطلاعات جدول در صورت وجود در TREEVIEW نود مربوطه تیک بخورد

    به ازای هرcid که parentid آن 0باشد یک کوئری میزنم ومیریزم توی datatable و ستون دیتا تیبل را میریزم توی نود تعریف شده.....و همین کار را برای parentid هایی که برابر با cdi است باز ی کوئری میزنم ومیریزم توی دیتا تیبل و مجدد ستون دیتاتیبل را در نود تعریف شده میریزم..

  4. #4

    نقل قول: اطلاعات جدول در صورت وجود در TREEVIEW نود مربوطه تیک بخورد

    کد پر کردن treeview رو نزاشتید که بتونم کمک کنم.
    اما بدونید که پراپرتی Nodes از treeview (نوع TreeNodeCollection) متدی به نام Find داره که برای پیدا کردن گره میشه ازش استفاده کرد. برای استفاده از این متد نیاز به یک کلید (Key) دارید که همان مشخصه Name از TreeNode هست.
    در زمان ایجاد گره(پر کردن treeview) ، اطلاعات رو از جدول دریافت و CID رو به Name و Title رو به Text گره نسبت بدید.(برای پر کردن treeview یک کوئری کافیست)

    متد UserPermissions را به اینصورت اصلاح کنید که فقط یک کوئری روی جدول بزنید و تمام CIDهایی را که برای شخص مورد نظر هست بدست بیارید و در یک دیتاتیبل بریزید. روی سطرهای دیتاتیبل پیمایش کنید و به ازای هر CID متد Find رو استفاده کنید و گره رو بدست بیارید و تیک بزنید.

  5. #5
    کاربر دائمی آواتار حسین.کاظمی
    تاریخ عضویت
    مرداد 1392
    محل زندگی
    Microsoft Visual Studio
    پست
    652

    نقل قول: اطلاعات جدول در صورت وجود در TREEVIEW نود مربوطه تیک بخورد

    سلام مجدد
    ببخشید من صبح به سیستم دسترسی نداشتم .......
    کدهای مربوط به پرکردن treeview


    TreeNode nodParent,nodChild,nodSubchild;
    DataTable dt_parent, dt_Child,dt_subchild;
    dt_parent = db.dataTableSelect(@"SELECT * FROM tbl_Permisstions WHERE ParentId=0" );
    for(int i=0;i < dt_parent.Rows.Count;i++)
    {
    nodParent = new TreeNode(dt_parent.Rows[i][0].ToString()+"-"+ dt_parent.Rows[i][1].ToString());
    dt_Child = db.dataTableSelect(@"SELECT * FROM tbl_Permisstions WHERE ParentId=" + dt_parent.Rows[i][0]);


    for (int j = 0; j < dt_Child.Rows.Count; j++)
    {
    nodChild = new TreeNode(dt_Child.Rows[j][0].ToString() + "-" + dt_Child.Rows[j][1].ToString());
    nodParent.Nodes.Add(nodChild);


    dt_subchild = db.dataTableSelect(@"SELECT * FROM tbl_Permisstions WHERE ParentId=" + dt_Child.Rows[j][0]);
    for (int s = 0; s < dt_subchild.Rows.Count; s++)
    {
    nodSubchild = new TreeNode(dt_subchild.Rows[s][0].ToString() + "-" + dt_subchild.Rows[s][1].ToString());
    nodChild.Nodes.Add(nodSubchild);
    }
    }
    treeView1.Nodes.Add(nodParent);
    }

  6. #6
    کاربر دائمی آواتار حسین.کاظمی
    تاریخ عضویت
    مرداد 1392
    محل زندگی
    Microsoft Visual Studio
    پست
    652

    نقل قول: اطلاعات جدول در صورت وجود در TREEVIEW نود مربوطه تیک بخورد

    کد
    پرکردن treeview را اینجوری اصلاح کردم....

    dt_parent = db.dataTableSelect(@"SELECT * FROM tbl_Permisstions WHERE ParentId=0");
    nodParent = new TreeNode();
    for (int i = 0; i < dt_parent.Rows.Count; i++)
    {
    nodParent.Name = dt_parent.Rows[i][0].ToString();
    nodParent.Text = dt_parent.Rows[i][1].ToString();
    nodParent = new TreeNode(dt_parent.Rows[i][0].ToString() + "-" + dt_parent.Rows[i][1].ToString());
    dt_Child = db.dataTableSelect(@"SELECT * FROM tbl_Permisstions WHERE ParentId=" + dt_parent.Rows[i][0]);


    for (int j = 0; j < dt_Child.Rows.Count; j++)
    {

    nodChild = new TreeNode(dt_Child.Rows[j][0].ToString() + "-" + dt_Child.Rows[j][1].ToString());
    nodParent.Nodes.Add(nodChild);


    dt_subchild = db.dataTableSelect(@"SELECT * FROM tbl_Permisstions WHERE ParentId=" + dt_Child.Rows[j][0]);
    for (int s = 0; s < dt_subchild.Rows.Count; s++)
    {
    nodSubchild = new TreeNode(dt_subchild.Rows[s][0].ToString() + "-" + dt_subchild.Rows[s][1].ToString());
    nodChild.Nodes.Add(nodSubchild);
    }
    }
    treeView1.Nodes.Add(nodParent);
    }


    و متد userpermission را هم طبق گفته هاتون؛بسری هاشو فهمیدم نوشتم ولی key را نمیدونم چی بنویسم


    DataTable dt = db.dataTableSelect(@"SELECT permissionID FROM tbl_Users_Persmissions WHERE id_user=" + userID);
    foreach (DataRow rr in dt.Rows)
    {
    treeView1.Nodes.Find(؟؟؟, true);
    }


    این کدهام،محبت میکنید چک کنید ببینید درسته یا نه؟




    ممنون
    آخرین ویرایش به وسیله Mahmoud.Afrad : شنبه 30 اردیبهشت 1396 در 19:12 عصر دلیل: بهم ریختن فرمت کدها

  7. #7

    نقل قول: اطلاعات جدول در صورت وجود در TREEVIEW نود مربوطه تیک بخورد

    فرض:
    جدولی به نام tbl_Permisstions با ستونهای PermissionId و Title و ParentId
    و tbl_Users_Permissions با ستونهای id و PermissionId و UserId

    کد پر کردن treeview رو به اینصورت اصلاح کنید (کوئری را برحسب parentId به صورت صعودی مرتب کنید و به ترتیب شروع به ساخت گره ها کنید)
                DataTable allPermissions = db.dataTableSelect(
    @"select PermissionId, Title, ParentId
    from tbl_Permisstions
    where ParentId = 0 OR ParentId in (select PermissionId from tbl_Permisstions)
    order by ParentId");

    for (var i = 0; i < allPermissions.Rows.Count; i++)
    {
    DataRow dtRow = allPermissions.Rows[i];
    string permissionId = Convert.ToString(dtRow["PermissionId"]);
    string permissionTitle = Convert.ToString(dtRow["Title"]);
    string permissionParentId = Convert.ToString(dtRow["ParentId"]);

    TreeNode node = new TreeNode
    {
    Text = permissionTitle,
    Name = permissionId
    };

    if (permissionParentId == "0")
    {
    treeView1.Nodes.Add(node);
    }
    else
    {
    TreeNode[] parentNodes = treeView1.Nodes.Find(permissionParentId, true);
    if (parentNodes.Length > 0)
    {
    parentNodes[0].Nodes.Add(node);
    }
    }
    }


    برای تیک زدن سطح دسترسی هر شخص به صورت زیر
                DataTable dt = db.dataTableSelect(@"SELECT permissionID FROM tbl_Users_Persmissions WHERE id_user=" + userID);
    foreach (DataRow row in dt.Rows)
    {
    string permissionID = Convert.ToString(row["permissionID"]);
    TreeNode[] nodes = treeView1.Nodes.Find(permissionID, true);
    if (nodes.Length > 0)
    {
    nodes[0].Checked = true;
    }
    }

تاپیک های مشابه

  1. سوال: (خیلی فوری) نمایش اطلاعات جدول به صورت گروهی در چند صفحه در StimulReport
    نوشته شده توسط baran_bataravat در بخش ابزارهای گزارش سازی
    پاسخ: 0
    آخرین پست: سه شنبه 05 خرداد 1394, 17:09 عصر
  2. سوال: خواندن اطلاعات جدول در صورت خالی نبودن !
    نوشته شده توسط ghasem110deh در بخش C#‎‎
    پاسخ: 6
    آخرین پست: جمعه 10 بهمن 1393, 17:00 عصر
  3. رسم نمودار از اطلاعات جدول در وب
    نوشته شده توسط m_amin_t در بخش SQL Server
    پاسخ: 4
    آخرین پست: شنبه 26 مرداد 1387, 15:04 عصر
  4. رسم نمودار از اطلاعات جدول در وب
    نوشته شده توسط m_amin_t در بخش ASP.NET Web Forms
    پاسخ: 1
    آخرین پست: دوشنبه 21 مرداد 1387, 12:42 عصر
  5. ذخیره اطلاعات جدول در فایل word
    نوشته شده توسط rostamedastan در بخش برنامه نویسی در Delphi
    پاسخ: 5
    آخرین پست: سه شنبه 01 شهریور 1384, 15:03 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •