PDA

View Full Version : Expand شدن یک گره خاص



شهابسلطانی
چهارشنبه 25 مهر 1403, 13:34 عصر
156211سلام
دوستان فرض کنید من یه TreeViewدارم که از دیتابیس SQL پر میشه به شکل زیر :
گره اصلی : سال 1403
گروه دوم : فصل بهار
گره سوم : فروردین
اردیبهشت
خرداد


وقتی مثلا "خرداد" رو ویرایش میکنم طبیعتا بعد از ویرایش دوباره متد لودن شدن TreeView رو فراخوانی میکنم تا تغییرات آپدیت بشه
اما مشکل من اینجاست:
چطوری میتونم بعد از ویرایش شدن به همین نقطه از TreeView برگردم ؟؟؟؟؟؟؟؟؟؟؟؟؟ یعنی به گروه سوم
چون توی متد لود شدن Expand رو ننوشتم و کل TreeView باز Collapse میشه
اگر هم توی متد لود شدن Expand بنویسم همه گره ها باز میشن که درست نیست

لطفا راهنمایی کنید
ممنون

ROSTAM2
چهارشنبه 25 مهر 1403, 16:00 عصر
156211سلام
دوستان فرض کنید من یه TreeViewدارم که از دیتابیس SQL پر میشه به شکل زیر :
گره اصلی : سال 1403
گروه دوم : فصل بهار
گره سوم : فروردین
اردیبهشت
خرداد


وقتی مثلا "خرداد" رو ویرایش میکنم طبیعتا بعد از ویرایش دوباره متد لودن شدن TreeView رو فراخوانی میکنم تا تغییرات آپدیت بشه
اما مشکل من اینجاست:
چطوری میتونم بعد از ویرایش شدن به همین نقطه از TreeView برگردم ؟؟؟؟؟؟؟؟؟؟؟؟؟ یعنی به گروه سوم
چون توی متد لود شدن Expand رو ننوشتم و کل TreeView باز Collapse میشه
اگر هم توی متد لود شدن Expand بنویسم همه گره ها باز میشن که درست نیست

لطفا راهنمایی کنید
ممنون

سلام

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

چرا که بعد از ویرایش هر گره کافیه اطلاعات همون گره رو تغیر بدید....

و برای انتخاب یک گره هم خصوصیت SelectedNode از TreeView استفاده می شه بر اساس نام گره (خصوصیت Name ) یا Key البته سلسله مراتب گره باید رعایت بشه.

شهابسلطانی
چهارشنبه 25 مهر 1403, 16:16 عصر
سلام

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

چرا که بعد از ویرایش هر گره کافیه اطلاعات همون گره رو تغیر بدید....

و برای انتخاب یک گره هم خصوصیت SelectedNode از TreeView استفاده می شه بر اساس نام گره (خصوصیت Name ) یا Key البته سلسله مراتب گره باید رعایت بشه.


سلام
سپاس از شما بابت راهنمایی
میشه یک نمونه بگید چجوری اطلاعات همون گره رو تغییر بدم؟
این کدهای من هست



private void FillTreeView()
{
TRSeason.Nodes.Clear();


var q = db.Database.SqlQuery<View_TreeYears>("select* from View_TreeYears where Parent_Year=0 order by Num_Year Asc ");
var Result = q.ToList();


for (int i = 0; i < Result.Count; i++)
{
TreeNode season = new TreeNode(Result[i].Num_Year + " - " + Result[i].Name_Year);
var ftr = Result[i].Name_Year;
season.Tag = Result[i].ID_Year;
TRSeason.Nodes.Add(season);
LoadTreeviewNode(season);
season.ForeColor = Color.Blue;
season.Expand();

}
}


private void LoadTreeviewNode(TreeNode TN)
{
int TagInt;
TagInt = Convert.ToInt32(TN.Tag);


var q = db.Database.SqlQuery<View_TreeYears>("select* from View_TreeYears where Parent_Year ='" + TagInt + "' ");
var query = q.ToList();


if (query.Count >= 0)
{
for (int I = 0; I < query.Count; I++)
{
TreeNode M = new TreeNode();
M.Tag = query[I].ID_Year;
M.Text = query[I].Field2_Year + "" + query[I].Num_Year + " - " + query[I].Name_Year.Trim();
TN.Nodes.Add(M);
TN.ForeColor = Color.Red;
M.ForeColor = Color.Green;
int CH = Convert.ToInt32(query[I].ChildCount);
if (CH >= 0)
{
LoadTreeviewNode(M);
}
M = null;
}
}
}

ROSTAM2
چهارشنبه 25 مهر 1403, 19:12 عصر
برای تغییر یک گره باید ببینید چه مواردی برای ایجادش در نظر گرفتید طبق همون موارد مقدیر رو بروزرسانی کنید ینی همون Update

برای مثال با منوی راست کلیک ویرایش موارد قایل ویرایش فراخوانی می شن و در قیلد هایی برای ویرایش نمایش داده می شن:
156212
156213

با کلید تائید اطلاعات مورد انتخاب شده از دیتابیس بر اساس آی.دی که به Tag از گره اختصاص داده شده و همچنین اطلاعات قابل نمایش مثل متن از گره هم تغییر می کنه

156214