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

نام تاپیک: کمک در مورد treeviwe

  1. #1
    کاربر دائمی
    تاریخ عضویت
    مرداد 1392
    محل زندگی
    شیراز-کرمانشاه
    پست
    321

    کمک در مورد treeviwe

    سلام
    اطلاعاتم رو ارسال میکنم به sqlServer
    توی sql یه جدول دارم که کالاها توش ذخیره میشن (ستونها : id -child -name -level -parent- description)
    توی همون جدول هم Parent و child رو تعییم میکنم
    حالا میخوام توی treeviwe نمایش بدم
    کد زیر رو نوشتم ولی فقط نامها رو میاره
    لطفا کمک بفرمایید.

    SqlConnection _cn = new SqlConnection(DBConnectioin.conStr);
    SqlCommand cmd = new SqlCommand("SELECT * FROM _pro ", _cn);
    _cn.Open();
    SqlDataReader reader = cmd.ExecuteReader();
    while (reader.Read())
    {
    TreeNode name = new TreeNode(reader["_proName"].ToString().Trim());
    TV1.Nodes.Add(name);
    }



  2. #2

    نقل قول: کمک در مورد treeviwe

    خب دوست عزیز شما کدی که نوشتید برای نام هاست و اون ها رو به TV1 اضافه میکنید.
    خط 9 کدتون، رو به این کد تغییر بدین:
    TV1.Nodes[reader["_proParrent"].ToString().Trim()].Nodes.Add(name);

    در ضمن _proParrent رو به نام ستونی که اسم والد هست تغییر بدین (اگه همین نیست).

  3. #3
    کاربر دائمی
    تاریخ عضویت
    مرداد 1392
    محل زندگی
    شیراز-کرمانشاه
    پست
    321

    نقل قول: کمک در مورد treeviwe

    نقل قول نوشته شده توسط ASHKANLAEI مشاهده تاپیک
    خب دوست عزیز شما کدی که نوشتید برای نام هاست و اون ها رو به TV1 اضافه میکنید.
    خط 9 کدتون، رو به این کد تغییر بدین:
    TV1.Nodes[reader["_proParrent"].ToString().Trim()].Nodes.Add(name);

    در ضمن _proParrent رو به نام ستونی که اسم والد هست تغییر بدین (اگه همین نیست).
    ممنونم که وقت میذارید
    لطفا بیخیال کدهای من بشید و یه نمونه کد اگر ممکنه بهم بدید تا بتونم جدولم رو توی treeviwe بریزم
    من از sqlserver استفاده میکنم و ستونهای جدولم هم اسمهاشون به ترتیب زیره:
    _proid
    _proKey
    _proParent
    _proLevel
    _proName
    _proDescription

    ممنون
    واقعا گیر کزدم

  4. #4

    نقل قول: کمک در مورد treeviwe

    من که گفتم، کل کدتون که این جا گذاشتین رو به این کد تغییر بدین:
    SqlConnection _cn = new SqlConnection(DBConnectioin.conStr);SqlCommand cmd = new SqlCommand("SELECT * FROM _pro ", _cn);
    _cn.Open();
    SqlDataReader reader = cmd.ExecuteReader();
    while (reader.Read())
    {
    TreeNode name = new TreeNode(reader["_proName"].ToString().Trim());
    TV1.Nodes[reader["_proParent"].ToString().Trim()].Nodes.Add(name);
    }

  5. #5
    کاربر دائمی
    تاریخ عضویت
    مرداد 1392
    محل زندگی
    شیراز-کرمانشاه
    پست
    321

    نقل قول: کمک در مورد treeviwe

    نقل قول نوشته شده توسط ASHKANLAEI مشاهده تاپیک
    من که گفتم، کل کدتون که این جا گذاشتین رو به این کد تغییر بدین:
    SqlConnection _cn = new SqlConnection(DBConnectioin.conStr);SqlCommand cmd = new SqlCommand("SELECT * FROM _pro ", _cn);
    _cn.Open();
    SqlDataReader reader = cmd.ExecuteReader();
    while (reader.Read())
    {
    TreeNode name = new TreeNode(reader["_proName"].ToString().Trim());
    TV1.Nodes[reader["_proParent"].ToString().Trim()].Nodes.Add(name);
    }
    بازم ایراد میگیره



    Er0rr.png

  6. #6

    نقل قول: کمک در مورد treeviwe

    اینجوری که خطا میگه احتمالا منظورش اینه که نام والد که در ستون proParent_ نوشتید با هیچ آیتمی در treeView همخوانی نداره.
    به نظرم چند سطر جدول رو بنویسید اینجا که بفهمیم مشکل از کجاست.
    و محتمل ترین مشکل اینه که شما برای والد ریشه به مشکل بر خوردین، منظورم اینه که برای اون هایی که والد ندارن در ستون proParent چی نوشتین؟
    اگر خالی هست، این کد کمک میکنه:
    if (reader["_proParent"].ToString().Trim() == "")    TV1.Nodes.Add(name);
    else
    TV1.Nodes[reader["_proParent"].ToString().Trim()].Nodes.Add(name);

  7. #7
    کاربر دائمی
    تاریخ عضویت
    مرداد 1392
    محل زندگی
    شیراز-کرمانشاه
    پست
    321

    نقل قول: کمک در مورد treeviwe

    نقل قول نوشته شده توسط ASHKANLAEI مشاهده تاپیک
    اینجوری که خطا میگه احتمالا منظورش اینه که نام والد که در ستون proParent_ نوشتید با هیچ آیتمی در treeView همخوانی نداره.
    به نظرم چند سطر جدول رو بنویسید اینجا که بفهمیم مشکل از کجاست.
    و محتمل ترین مشکل اینه که شما برای والد ریشه به مشکل بر خوردین، منظورم اینه که برای اون هایی که والد ندارن در ستون proParent چی نوشتین؟
    اگر خالی هست، این کد کمک میکنه:
    if (reader["_proParent"].ToString().Trim() == "")    TV1.Nodes.Add(name);
    else
    TV1.Nodes[reader["_proParent"].ToString().Trim()].Nodes.Add(name);
    ممنونم از وقت گذاشتن تون

    برای مقدار والد در جدول چیزی ندارم و مقدار NULL هست

  8. #8
    کاربر دائمی
    تاریخ عضویت
    مرداد 1392
    محل زندگی
    شیراز-کرمانشاه
    پست
    321

    نقل قول: کمک در مورد treeviwe

    نقل قول نوشته شده توسط ASHKANLAEI مشاهده تاپیک
    اینجوری که خطا میگه احتمالا منظورش اینه که نام والد که در ستون proParent_ نوشتید با هیچ آیتمی در treeView همخوانی نداره.
    به نظرم چند سطر جدول رو بنویسید اینجا که بفهمیم مشکل از کجاست.
    و محتمل ترین مشکل اینه که شما برای والد ریشه به مشکل بر خوردین، منظورم اینه که برای اون هایی که والد ندارن در ستون proParent چی نوشتین؟
    اگر خالی هست، این کد کمک میکنه:
    if (reader["_proParent"].ToString().Trim() == "")    TV1.Nodes.Add(name);
    else
    TV1.Nodes[reader["_proParent"].ToString().Trim()].Nodes.Add(name);

    این هم بانکsqlEr0rr12.jpg

  9. #9
    کاربر دائمی
    تاریخ عضویت
    مرداد 1392
    محل زندگی
    شیراز-کرمانشاه
    پست
    321

    نقل قول: کمک در مورد treeviwe

    نقل قول نوشته شده توسط شهابسلطانی مشاهده تاپیک
    این هم بانکsqlEr0rr12.jpg
    آقا شما که زحمت کشیدید لطفا با توجه به جدول یه نمونه کد بهم بدید که توی treeviwe نمایش بده
    خدا خیرت بده
    خیلی گیر کردم
    توضیح : ردیف 8 و 9 جدول زیر مجموعه ردیف 1 هستند(در واقع فرزند هستند)

  10. #10

    نقل قول: کمک در مورد treeviwe

    من که دقیق نمیدونم چون الان امکانات هم ندارم فعلا نمیتونم عملی کار کنم ولی شما ببینید این کار میکنه؟
    if (reader["_proParent"] == null)						TV1.Nodes.Add(name);
    else
    TV1.Nodes[int(reader["_proParent"].ToString())].Nodes.Add(name);

  11. #11
    کاربر دائمی
    تاریخ عضویت
    مرداد 1392
    محل زندگی
    شیراز-کرمانشاه
    پست
    321

    نقل قول: کمک در مورد treeviwe

    نقل قول نوشته شده توسط ASHKANLAEI مشاهده تاپیک
    من که دقیق نمیدونم چون الان امکانات هم ندارم فعلا نمیتونم عملی کار کنم ولی شما ببینید این کار میکنه؟
    if (reader["_proParent"] == null)                        TV1.Nodes.Add(name);
    else
    TV1.Nodes[int(reader["_proParent"].ToString())].Nodes.Add(name);
    متاسفانه همون خطا رو میده

  12. #12

    نقل قول: کمک در مورد treeviwe

    دیگه من واقعا نمیدونم شما یک بریک پوینت بزنید اون ستون رو چک کنید.
    هر چی که هست چون مقدار Null هست این خطا رو میده.

  13. #13
    کاربر دائمی
    تاریخ عضویت
    مرداد 1392
    محل زندگی
    شیراز-کرمانشاه
    پست
    321

    نقل قول: کمک در مورد treeviwe

    نقل قول نوشته شده توسط ASHKANLAEI مشاهده تاپیک
    دیگه من واقعا نمیدونم شما یک بریک پوینت بزنید اون ستون رو چک کنید.
    هر چی که هست چون مقدار Null هست این خطا رو میده.
    بهر حال ممنون که زمان گذاشتید

  14. #14
    کاربر دائمی
    تاریخ عضویت
    مرداد 1392
    محل زندگی
    شیراز-کرمانشاه
    پست
    321

    نقل قول: کمک در مورد treeviwe

    نقل قول نوشته شده توسط ASHKANLAEI مشاهده تاپیک
    دیگه من واقعا نمیدونم شما یک بریک پوینت بزنید اون ستون رو چک کنید.
    هر چی که هست چون مقدار Null هست این خطا رو میده.
    ستون parent رو هم از حالت NULL بیرون آوردم . بهش مقدار دادم ولی بازم همون خطا رو میده
    کلا بجای ستون Parent هر ستونی رو میذارم تو کدی که هست بازم همون خطا رو میگیره.

  15. #15

    نقل قول: کمک در مورد treeviwe

    نقل قول نوشته شده توسط شهابسلطانی مشاهده تاپیک
    سلام
    اطلاعاتم رو ارسال میکنم به sqlServer
    توی sql یه جدول دارم که کالاها توش ذخیره میشن (ستونها : id -child -name -level -parent- description)
    توی همون جدول هم Parent و child رو تعییم میکنم
    حالا میخوام توی treeviwe نمایش بدم
    کد زیر رو نوشتم ولی فقط نامها رو میاره
    لطفا کمک بفرمایید.

    SqlConnection _cn = new SqlConnection(DBConnectioin.conStr);
    SqlCommand cmd = new SqlCommand("SELECT * FROM _pro ", _cn);
    _cn.Open();
    SqlDataReader reader = cmd.ExecuteReader();
    while (reader.Read())
    {
    TreeNode name = new TreeNode(reader["_proName"].ToString().Trim());
    TV1.Nodes.Add(name);
    }



    SqlConnection _cn = new SqlConnection(DBConnectioin.conStr);
    SqlCommand cmd = new SqlCommand("SELECT * FROM _pro ", _cn);
    _cn.Open();
    var reader = cmd.ExecuteReader();
    var childItems = new List<KeyValuePair<TreeNode, string>>();
    while (reader.Read())
    {
    var node = new TreeNode(reader["_proName"].ToString().Trim());
    node.Name = reader["_proid"].ToString();
    if (reader["_proParent"] == DBNull.Value)
    {
    TV1.Nodes.Add(node);
    }
    else
    {
    childItems.Add(new KeyValuePair<TreeNode, string>(node, reader["_proParent"].ToString()));
    }
    }
    foreach (var item in childItems)
    {
    if (TV1.Nodes.ContainsKey(item.Value))
    {
    TV1.Nodes[item.Value].Nodes.Add(item.Key);
    }
    }
    _cn.Close();

  16. #16
    کاربر دائمی
    تاریخ عضویت
    مرداد 1392
    محل زندگی
    شیراز-کرمانشاه
    پست
    321

    نقل قول: کمک در مورد treeviwe

    نقل قول نوشته شده توسط the king مشاهده تاپیک

    SqlConnection _cn = new SqlConnection(DBConnectioin.conStr);
    SqlCommand cmd = new SqlCommand("SELECT * FROM _pro ", _cn);
    _cn.Open();
    var reader = cmd.ExecuteReader();
    var childItems = new List<KeyValuePair<TreeNode, string>>();
    while (reader.Read())
    {
    var node = new TreeNode(reader["_proName"].ToString().Trim());
    node.Name = reader["_proid"].ToString();
    if (reader["_proParent"] == DBNull.Value)
    {
    TV1.Nodes.Add(node);
    }
    else
    {
    childItems.Add(new KeyValuePair<TreeNode, string>(node, reader["_proParent"].ToString()));
    }
    }
    foreach (var item in childItems)
    {
    if (TV1.Nodes.ContainsKey(item.Value))
    {
    TV1.Nodes[item.Value].Nodes.Add(item.Key);
    }
    }
    _cn.Close();
    داداش واقعا خدا خیرت بده
    احسنت
    دستتون در نکنه

  17. #17
    کاربر دائمی
    تاریخ عضویت
    مرداد 1392
    محل زندگی
    شیراز-کرمانشاه
    پست
    321

    نقل قول: کمک در مورد treeviwe

    نقل قول نوشته شده توسط the king مشاهده تاپیک

    SqlConnection _cn = new SqlConnection(DBConnectioin.conStr);
    SqlCommand cmd = new SqlCommand("SELECT * FROM _pro ", _cn);
    _cn.Open();
    var reader = cmd.ExecuteReader();
    var childItems = new List<KeyValuePair<TreeNode, string>>();
    while (reader.Read())
    {
    var node = new TreeNode(reader["_proName"].ToString().Trim());
    node.Name = reader["_proid"].ToString();
    if (reader["_proParent"] == DBNull.Value)
    {
    TV1.Nodes.Add(node);
    }
    else
    {
    childItems.Add(new KeyValuePair<TreeNode, string>(node, reader["_proParent"].ToString()));
    }
    }
    foreach (var item in childItems)
    {
    if (TV1.Nodes.ContainsKey(item.Value))
    {
    TV1.Nodes[item.Value].Nodes.Add(item.Key);
    }
    }
    _cn.Close();

    فقط یه نکته داداش
    وقتی زیر زیر مجموعه جدید برای فرزند تعریف میکنم
    توی treeview نمیاره
    یعنی فقط پدر و فرزند رو نشون میده و نوه رو نشون نمیده

  18. #18

    نقل قول: کمک در مورد treeviwe

    نقل قول نوشته شده توسط شهابسلطانی مشاهده تاپیک
    فقط یه نکته داداش
    وقتی زیر زیر مجموعه جدید برای فرزند تعریف میکنم
    توی treeview نمیاره
    یعنی فقط پدر و فرزند رو نشون میده و نوه رو نشون نمیده
    نمیدونستم در جدول تون نوه و نتیجه هم دارین :

    SqlConnection _cn = new SqlConnection(DBConnectioin.conStr);
    SqlCommand cmd = new SqlCommand("SELECT * FROM _pro ", _cn);
    _cn.Open();
    var reader = cmd.ExecuteReader();
    var childItems = new List<KeyValuePair<TreeNode, string>>();
    while (reader.Read())
    {
    var node = new TreeNode(reader["_proName"].ToString().Trim());
    node.Name = reader["_proid"].ToString();
    if (reader["_proParent"] == DBNull.Value)
    {
    TV1.Nodes.Add(node);
    }
    else
    {
    childItems.Add(new KeyValuePair<TreeNode, string>(node, reader["_proParent"].ToString()));
    }
    }
    bool parentFound;
    do
    {
    parentFound = false;
    for (var i = 0; i < childItems.Count; i++)
    {
    var parents = TV1.Nodes.Find(childItems[i].Value, true);
    if (parents.Length > 0)
    {
    parents[0].Nodes.Add(childItems[i].Key);
    childItems.RemoveAt(i);
    parentFound = true;
    i--;
    }
    }
    } while (parentFound);
    _cn.Close();

  19. #19
    کاربر دائمی
    تاریخ عضویت
    مرداد 1392
    محل زندگی
    شیراز-کرمانشاه
    پست
    321

    نقل قول: کمک در مورد treeviwe

    نقل قول نوشته شده توسط the king مشاهده تاپیک
    نمیدونستم در جدول تون نوه و نتیجه هم دارین :

    SqlConnection _cn = new SqlConnection(DBConnectioin.conStr);
    SqlCommand cmd = new SqlCommand("SELECT * FROM _pro ", _cn);
    _cn.Open();
    var reader = cmd.ExecuteReader();
    var childItems = new List<KeyValuePair<TreeNode, string>>();
    while (reader.Read())
    {
    var node = new TreeNode(reader["_proName"].ToString().Trim());
    node.Name = reader["_proid"].ToString();
    if (reader["_proParent"] == DBNull.Value)
    {
    TV1.Nodes.Add(node);
    }
    else
    {
    childItems.Add(new KeyValuePair<TreeNode, string>(node, reader["_proParent"].ToString()));
    }
    }
    bool parentFound;
    do
    {
    parentFound = false;
    for (var i = 0; i < childItems.Count; i++)
    {
    var parents = TV1.Nodes.Find(childItems[i].Value, true);
    if (parents.Length > 0)
    {
    parents[0].Nodes.Add(childItems[i].Key);
    childItems.RemoveAt(i);
    parentFound = true;
    i--;
    }
    }
    } while (parentFound);
    _cn.Close();
    آقا عالی بود
    خدا خیرت بده

    آره بابا اینا یه طایفه هستن واسه خودشون کلی هم دور هم شادن

  20. #20
    کاربر دائمی آواتار samiasoft
    تاریخ عضویت
    مهر 1391
    محل زندگی
    اردبیل
    پست
    1,242

    نقل قول: کمک در مورد treeviwe

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

    این تصویر رو ببینید :

    وقتی اومدم برای nod ها فونت بولد را تعریف میکنم همانطور که ملاحظه میکنید آخر حروف کلمات ناقص نمایش داده میشوند!! به نظرتون مشکل از کجاست!

    Font boldFont = new Font("Arial", 8, FontStyle.Bold);

    for (int i = 0; i < treeView_SourceCodes.Nodes.Count; i++)
    {

    treeView_SourceCodes.Nodes[i].NodeFont = boldFont;

    }

  21. #21

    نقل قول: کمک در مورد treeviwe

    نقل قول نوشته شده توسط samiasoft مشاهده تاپیک
    سلام دوستان
    برای اینکه تاپیک جدیدی ایجاد نکنم همینجا مشکل رو مطرح میکنم

    این تصویر رو ببینید :

    وقتی اومدم برای nod ها فونت بولد را تعریف میکنم همانطور که ملاحظه میکنید آخر حروف کلمات ناقص نمایش داده میشوند!! به نظرتون مشکل از کجاست!

    Font boldFont = new Font("Arial", 8, FontStyle.Bold);

    for (int i = 0; i < treeView_SourceCodes.Nodes.Count; i++)
    {

    treeView_SourceCodes.Nodes[i].NodeFont = boldFont;

    }
    کار شما هیچ ایرادی نداره، ایراد از کدی است که طراح یا طراحان کنترل TreeView زحمت نوشتنش رو کشیدن. وقتی قراره یک Node نمایش داده بشه اول باید ابعاد طولی و عرضی متن بدست بیاد تا ببینن موقع رسم چه کادری رو اشغال میکنه و بعد کادرش رو بکشن و بعد متن رو داخلش رسم کنن. برای محاسبه ابعاد متن هم از TextRenderer.MeasureText استفاده کردن. تا اینجاش مشکلی نیست، ولی ایراد در اینه که بجای treeNode.Font که فرضا شما Bold اش کردین و متن بزرگتری داره محاسبه رو با treeNode.TreeView.Font رو انجام دادن که فونت پیشفرض گره های TreeView است و اندازه کوچکتری داشته. نتیجه این میشه که ابعادی که محاسبه می کنند برای اون متن Bold شده زیاده کوچیکه و متن داخلش کامل جا نمیشه. این تقصیر شما نیست، اشتباه کسی است که کد روتین رسم رو نوشته.

    treeview.png

    دو تا راه حل کلی وجود داره، راه حل اول اینه که بیایید عمدا فونت پیشفرض کل TreeView رو Bold کنید (treeView1.Font) و خودتون در گره هایی که باید Bold نباشن فونت Bold نشده قرار بدید.
    اینطوری محاسبه بر اساس فونت Bold شده انجام میشه و متن چه Bold باشه و چه نباشه در کادر محاسبه شده جا میشه.

    راه حل دوم اینه که treeView1.DrawMode رو TreeViewDrawMode.OwnerDrawAll قرار بدید و کل روتین TreeView1_DrawNode که رسم یک گره ئه دستی و با کد درست بنویسید.
    شبیه این کار رو میشه با وراثت از کلاس TreeView هم انجام داد تا نتیجه یک کلاس جدید باشه ولی اساسش همونه بازنویسی روتین برای DrawNode ئه.

  22. #22
    کاربر دائمی آواتار samiasoft
    تاریخ عضویت
    مهر 1391
    محل زندگی
    اردبیل
    پست
    1,242

    نقل قول: کمک در مورد treeviwe

    نقل قول نوشته شده توسط the king مشاهده تاپیک
    دو تا راه حل کلی وجود داره، راه حل اول اینه که بیایید عمدا فونت پیشفرض کل TreeView رو Bold کنید (treeView1.Font) و خودتون در گره هایی که باید Bold نباشن فونت Bold نشده قرار بدید.
    اینطوری محاسبه بر اساس فونت Bold شده انجام میشه و متن چه Bold باشه و چه نباشه در کادر محاسبه شده جا میشه.

    راه حل دوم اینه که treeView1.DrawMode رو TreeViewDrawMode.OwnerDrawAll قرار بدید و کل روتین TreeView1_DrawNode که رسم یک گره ئه دستی و با کد درست بنویسید.
    شبیه این کار رو میشه با وراثت از کلاس TreeView هم انجام داد تا نتیجه یک کلاس جدید باشه ولی اساسش همونه بازنویسی روتین برای DrawNode ئه.
    ممنونم بابت این راهنمایی و توضیحات مفیدتون

  23. #23
    کاربر دائمی
    تاریخ عضویت
    مرداد 1392
    محل زندگی
    شیراز-کرمانشاه
    پست
    321

    نقل قول: کمک در مورد treeviwe

    نقل قول نوشته شده توسط the king مشاهده تاپیک
    نمیدونستم در جدول تون نوه و نتیجه هم دارین :

    SqlConnection _cn = new SqlConnection(DBConnectioin.conStr);
    SqlCommand cmd = new SqlCommand("SELECT * FROM _pro ", _cn);
    _cn.Open();
    var reader = cmd.ExecuteReader();
    var childItems = new List<KeyValuePair<TreeNode, string>>();
    while (reader.Read())
    {
    var node = new TreeNode(reader["_proName"].ToString().Trim());
    node.Name = reader["_proid"].ToString();
    if (reader["_proParent"] == DBNull.Value)
    {
    TV1.Nodes.Add(node);
    }
    else
    {
    childItems.Add(new KeyValuePair<TreeNode, string>(node, reader["_proParent"].ToString()));
    }
    }
    bool parentFound;
    do
    {
    parentFound = false;
    for (var i = 0; i < childItems.Count; i++)
    {
    var parents = TV1.Nodes.Find(childItems[i].Value, true);
    if (parents.Length > 0)
    {
    parents[0].Nodes.Add(childItems[i].Key);
    childItems.RemoveAt(i);
    parentFound = true;
    i--;
    }
    }
    } while (parentFound);
    _cn.Close();

    سلام بر دوست عزیز
    آقا به یه مشکل خوردم
    ببینید من یه فرم دارم حاوی دیتا گرید و تری ویو
    وقتی یک رکورد اضافه میکنم دیتاگرید آپدیت میشه
    ولی از هر متدی استفاده میکنم تری ویو آپدیت نمیشه
    هم از refresh هم از Update ولی نمیشه
    ممنون

  24. #24

    نقل قول: کمک در مورد treeviwe

    نقل قول نوشته شده توسط شهابسلطانی مشاهده تاپیک
    سلام بر دوست عزیز
    آقا به یه مشکل خوردم
    ببینید من یه فرم دارم حاوی دیتا گرید و تری ویو
    وقتی یک رکورد اضافه میکنم دیتاگرید آپدیت میشه
    ولی از هر متدی استفاده میکنم تری ویو آپدیت نمیشه
    هم از refresh هم از Update ولی نمیشه
    ممنون
    زمانی که رکوردی رو اضافه میکنید به DataGridView اضافه میکنید و DataSource اش یا به پایگاه داده تون؟ از این جهت می پرسم که این کد بالا مادامی که مجددا اجراش نکنید نه متوجه میشه که پایگاه داده تغییری کرده و نه جز پایگاه داده جای دیگری رو میگرده.
    حالا اگر ما به DataGridView آیتمی اضافه کنیم یا به DataSource اش موردی رو اضافه کنیم بدون اینکه در پایگاه داده ثبت اش صورت بگیره، یا حتی ثبت اش کنیم ولی دوبار این کد رو اجرا نکنیم، TV1 نه متوجه تغییری میشه و نه خودش اقدامی برای بروز کردن می کنه.
    Refresh کردن TV1 یعنی هر چیزی داخلش هست دوباره از نو رسم بشه، باعث نمیشه به پایگاه داده رجوع کنه، همون آیتم ها که از قبل داخلش بود رو مجددا رسم می کنه، حتی اگر در پایگاه داده کل جدول رو پاک هم بکنید این آیتم ها توی TV1 میمونن و فقط مجددا رسم میشن.
    البته اگر خواستید از نو اجراش کنید اول یک ()TV1.Nodes.Clear رو هم اضافه کنید تا Node های قبلی پاک بشن.

  25. #25
    کاربر دائمی
    تاریخ عضویت
    مرداد 1392
    محل زندگی
    شیراز-کرمانشاه
    پست
    321

    نقل قول: کمک در مورد treeviwe

    نقل قول نوشته شده توسط the king مشاهده تاپیک
    زمانی که رکوردی رو اضافه میکنید به DataGridView اضافه میکنید و DataSource اش یا به پایگاه داده تون؟ از این جهت می پرسم که این کد بالا مادامی که مجددا اجراش نکنید نه متوجه میشه که پایگاه داده تغییری کرده و نه جز پایگاه داده جای دیگری رو میگرده.
    حالا اگر ما به DataGridView آیتمی اضافه کنیم یا به DataSource اش موردی رو اضافه کنیم بدون اینکه در پایگاه داده ثبت اش صورت بگیره، یا حتی ثبت اش کنیم ولی دوبار این کد رو اجرا نکنیم، TV1 نه متوجه تغییری میشه و نه خودش اقدامی برای بروز کردن می کنه.
    Refresh کردن TV1 یعنی هر چیزی داخلش هست دوباره از نو رسم بشه، باعث نمیشه به پایگاه داده رجوع کنه، همون آیتم ها که از قبل داخلش بود رو مجددا رسم می کنه، حتی اگر در پایگاه داده کل جدول رو پاک هم بکنید این آیتم ها توی TV1 میمونن و فقط مجددا رسم میشن.
    البته اگر خواستید از نو اجراش کنید اول یک ()TV1.Nodes.Clear رو هم اضافه کنید تا Node های قبلی پاک بشن.

    ابتدا ممنونم که زمان میگذارید
    وقتی رکورد جدید اضافه میشه توسط کاربر اطلاعات به دیتابیس (sql server) ارسال میشه
    و من بعد از نمایش پیام "اطلاعات ثبت شد" دیتاگرید رو به روز میکنم که باعث میشه بلافاصله کاربر رکوزد اضافه شده رو ببینه
    اما اومدم کدهای تری ویو رو که شما زحمت کشیدید به همین قسمت هم اضافه کردم ولی متاسفانه مثل دیتا گرید رفرش نشد

    اگر لازم میدونید تا تصویر هم بذارم

  26. #26
    کاربر دائمی
    تاریخ عضویت
    مرداد 1392
    محل زندگی
    شیراز-کرمانشاه
    پست
    321

    نقل قول: کمک در مورد treeviwe

    با توجه به تصویر ببینید
    سطر آخر به گرید اضافه شده اما به تری ویو اضافه نشدهScreenshot (4).png

  27. #27
    کاربر دائمی
    تاریخ عضویت
    مرداد 1392
    محل زندگی
    شیراز-کرمانشاه
    پست
    321

    نقل قول: کمک در مورد treeviwe

    نقل قول نوشته شده توسط شهابسلطانی مشاهده تاپیک
    با توجه به تصویر ببینید
    سطر آخر به گرید اضافه شده اما به تری ویو اضافه نشدهScreenshot (4).png

    یه سوال دیگه هم دارم
    توی گرید نگاه کنید هریک از عنوان ها یک کد هم دارد
    چطوری میشه توی تری ویو در کنار عناوین این کدها رو هم اضافه کرد
    فیلد کدها در sql به اسم _proKey هست

  28. #28
    کاربر دائمی
    تاریخ عضویت
    مرداد 1392
    محل زندگی
    شیراز-کرمانشاه
    پست
    321

    نقل قول: کمک در مورد treeviwe

    من کلا کار با تری ویو برام سخته

  29. #29

    نقل قول: کمک در مورد treeviwe

    نقل قول نوشته شده توسط شهابسلطانی مشاهده تاپیک
    ابتدا ممنونم که زمان میگذارید
    وقتی رکورد جدید اضافه میشه توسط کاربر اطلاعات به دیتابیس (sql server) ارسال میشه
    و من بعد از نمایش پیام "اطلاعات ثبت شد" دیتاگرید رو به روز میکنم که باعث میشه بلافاصله کاربر رکوزد اضافه شده رو ببینه
    اما اومدم کدهای تری ویو رو که شما زحمت کشیدید به همین قسمت هم اضافه کردم ولی متاسفانه مثل دیتا گرید رفرش نشد

    اگر لازم میدونید تا تصویر هم بذارم
    اول از دو مساله مطمئن بشیم. اولی اینکه جدول داخل پایگاه رو باز کنید. ببینید اون آیتم اضافه شده proParent_ اش درست ئه یا نه. اگه والد پیدا نشه TreeView نمیتونه گره ای که پدر و مادرش مفقود شده جایی نشون بده.
    دوم اینکه شما آیتمی رو به DataGridView به همون روشی که اجرا می کنید اضافه کنید و برنامه رو ببندید و مجددا اجرا کنید. اگه مورد اضافه شده نه در DataGridView و نه در TreeView نمایش داده نشد، پس یک ایرادی در بروز رسانی پایگاه داده است نه TreeView.
    اگر در هر دو شون به درستی نمایش داده شد، پس کد نمایش مشکلی نداره، صرفا در جایی که لازمه اجرا نشده. اگر فقط در DataGridView نمایش داده شد اونوقت بگید تا در مورد علتش بررسی کنیم.

    نقل قول نوشته شده توسط شهابسلطانی مشاهده تاپیک
    یه سوال دیگه هم دارم
    توی گرید نگاه کنید هریک از عنوان ها یک کد هم دارد
    چطوری میشه توی تری ویو در کنار عناوین این کدها رو هم اضافه کرد
    فیلد کدها در sql به اسم _proKey هست
    اگه همینطوری ساده اضافه کردنش کافی باشه، اون سطری که نوشته ... var node = new رو با این دو سطر جایگزین می کنیم :

    var title = reader["_proKey"].ToString() + " " + reader["_proName"].ToString().Trim();
    var node = new TreeNode(title);

  30. #30
    کاربر دائمی
    تاریخ عضویت
    مرداد 1392
    محل زندگی
    شیراز-کرمانشاه
    پست
    321

    نقل قول: کمک در مورد treeviwe

    نقل قول نوشته شده توسط the king مشاهده تاپیک
    اول از دو مساله مطمئن بشیم. اولی اینکه جدول داخل پایگاه رو باز کنید. ببینید اون آیتم اضافه شده proParent_ اش درست ئه یا نه. اگه والد پیدا نشه TreeView نمیتونه گره ای که پدر و مادرش مفقود شده جایی نشون بده.
    دوم اینکه شما آیتمی رو به DataGridView به همون روشی که اجرا می کنید اضافه کنید و برنامه رو ببندید و مجددا اجرا کنید. اگه مورد اضافه شده نه در DataGridView و نه در TreeView نمایش داده نشد، پس یک ایرادی در بروز رسانی پایگاه داده است نه TreeView.
    اگر در هر دو شون به درستی نمایش داده شد، پس کد نمایش مشکلی نداره، صرفا در جایی که لازمه اجرا نشده. اگر فقط در DataGridView نمایش داده شد اونوقت بگید تا در مورد علتش بررسی کنیم.



    اگه همینطوری ساده اضافه کردنش کافی باشه، اون سطری که نوشته ... var node = new رو با این دو سطر جایگزین می کنیم :

    var title = reader["_proKey"].ToString() + " " + reader["_proName"].ToString().Trim();
    var node = new TreeNode(title);
    واقعا ممنونم از اینکه با صبر و حوصله جواب میدید
    وقتی رکورد اضافه میشه و من فرم رو می بندم و دوباره باز میکنم
    هم توی دیتا گرید هم توی تری ویو مشکل نداره و اضافه شده و نمایش داده میشه
    دقیقا مشکل اینه که زمانی که فرم Active هست رفرش نمیشه

  31. #31
    کاربر دائمی
    تاریخ عضویت
    مرداد 1392
    محل زندگی
    شیراز-کرمانشاه
    پست
    321

    نقل قول: کمک در مورد treeviwe

    نقل قول نوشته شده توسط the king مشاهده تاپیک
    اول از دو مساله مطمئن بشیم. اولی اینکه جدول داخل پایگاه رو باز کنید. ببینید اون آیتم اضافه شده proParent_ اش درست ئه یا نه. اگه والد پیدا نشه TreeView نمیتونه گره ای که پدر و مادرش مفقود شده جایی نشون بده.
    دوم اینکه شما آیتمی رو به DataGridView به همون روشی که اجرا می کنید اضافه کنید و برنامه رو ببندید و مجددا اجرا کنید. اگه مورد اضافه شده نه در DataGridView و نه در TreeView نمایش داده نشد، پس یک ایرادی در بروز رسانی پایگاه داده است نه TreeView.
    اگر در هر دو شون به درستی نمایش داده شد، پس کد نمایش مشکلی نداره، صرفا در جایی که لازمه اجرا نشده. اگر فقط در DataGridView نمایش داده شد اونوقت بگید تا در مورد علتش بررسی کنیم.



    اگه همینطوری ساده اضافه کردنش کافی باشه، اون سطری که نوشته ... var node = new رو با این دو سطر جایگزین می کنیم :

    var title = reader["_proKey"].ToString() + " " + reader["_proName"].ToString().Trim();
    var node = new TreeNode(title);
    کدها هم به عناوین اضافه شد

  32. #32

    نقل قول: کمک در مورد treeviwe

    نقل قول نوشته شده توسط شهابسلطانی مشاهده تاپیک
    واقعا ممنونم از اینکه با صبر و حوصله جواب میدید
    وقتی رکورد اضافه میشه و من فرم رو می بندم و دوباره باز میکنم
    هم توی دیتا گرید هم توی تری ویو مشکل نداره و اضافه شده و نمایش داده میشه
    دقیقا مشکل اینه که زمانی که فرم Active هست رفرش نمیشه
    همه اون کدی که برای نمایش در TreeView داریم رو داخل یک متد مثل ()private void UpdateTreeView قرار بدید و بعد وقتی پیام "اطلاعات ثبت شد" رو نشون دادید بجای Refresh اون ()UpdateTreeView رو اجرا کنید.
    فقط در اولین سطر کد داخل ()UpdateTreeView نوشتن ()TV1.Nodes.Clear فراموش نشه.

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

  1. سوال: پر کردن از سه جدول treeviwe
    نوشته شده توسط Iran58 در بخش C#‎‎
    پاسخ: 3
    آخرین پست: سه شنبه 24 تیر 1393, 03:34 صبح
  2. کد دادن به هریک از سطح های treeviwe
    نوشته شده توسط fidnah در بخش مطالب مرتبط با بانکهای اطلاعاتی در VB6
    پاسخ: 0
    آخرین پست: سه شنبه 06 خرداد 1393, 11:30 صبح
  3. ارتباط با فرم ها در Treeviwe
    نوشته شده توسط elena در بخش مباحث عمومی دلفی و پاسکال
    پاسخ: 1
    آخرین پست: پنج شنبه 26 مرداد 1391, 13:13 عصر
  4. مشکل در treeviwe
    نوشته شده توسط forodo007 در بخش C#‎‎
    پاسخ: 3
    آخرین پست: پنج شنبه 12 آبان 1390, 22:18 عصر
  5. سوال: چگونه کار باگره های treeviwe
    نوشته شده توسط vhossein در بخش C#‎‎
    پاسخ: 1
    آخرین پست: یک شنبه 18 بهمن 1388, 23:04 عصر

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

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