PDA

View Full Version : چگونه با درگ کردن نودهای treeview تو دیتابیس ذخیره کنم



programerinfonet
سه شنبه 19 دی 1391, 22:31 عصر
سلام دوستان
نم تو برنامم یک tree view دارم که از بانک اطلاعاتی محتویاتش رو میگیره حالا میخوام اگه یک نود فرزند رو از تو نود والد خودش درگ کردم و تو نود والد دیگه ای رها کردم نود تو اون بخش ذخیره بشه
به عنوان مثال من تو جدولم بانک 2 تا فیلد با نام های مشتری و استان دارم
که تو برنامه TreeView دارای 10 نود استان هست و هر نود هم دارای 10 مشتری (هر استان 10 مشتری)حالا میخوام اگه یک مشتری رو از یک استان درگ کردم تو یک استان دیگه نام استان اون مشتری تو بانک هم اصلاح بشه
چه طوری این کار رو انجام بدم
لطفأ کمکم کنید
ممنون

RED-C0DE
سه شنبه 19 دی 1391, 23:19 عصر
مشکلتون دقیقا کجاست؟
عملیات drag and drop؟ یا ذخیره حاصل درختی در بانک؟ یا هردو؟

اینجا اگه کارتون رو به 2 بخش تقسیم کنید راحتترین
1- drag and drop کردن نودها در UI (که احتمالا این بخش رو انجام دادین)
2- ذخیره درخت در بانک (احتمالا ساختار جداول بانکتون رو هم بدرستی برای این درخت چیدین)

اگه بخواین بصورت آنی نتیجه رو بعد از هر Drag&Drop در بانک ذخیره کنید (ک البته زیاد جالب نیست چون بهتره اجازه بدین کاربر کارشو انجام بده بعد از اینکه خیالش راحت شد و همه ی dragdrop ها رو انجام داد با زدن کلید "ذخیره" ، حاصل کار درخت رو در بانک ذخیره کنه) ،‌می تونین رویداد DragDrop رو در TreeView تون هندل کنید و درخت رو در بانک ذخیره کنید..
و یا می تونین همه ی تغییرات رو بصورت یکجا در بانک ذخیره کنید (که در بیشتر سناریوها معقول تر و بهینه تر است)

برای ذخیره هم ساختار جداولتون رو بگین ب چ صورت است تا اگه مشکلی هست راهنمایی کنن دوستان

programerinfonet
چهارشنبه 20 دی 1391, 00:05 صبح
خیلی ممنون دوست عزیز
میدونی تو هر دو قسمتش مشکل دارم
هم درگ و هم ذخیره
البته باید روش اولی که گفتید عمل کنم
یعنی تغییرات به صورت آنی اعمال بشن . چون احتمال داره که همون لحظه به نتایج به دست آومده نیاز داشته باشه

بعد ساختار جدول رو هم شما این جوری فرض کنید که : جدول ما شامل 5 تا فیلد هست که دوتاش بع نوان نود والد و فرزند محسوب میشن . یعنی ...

Table 1
Field 1 : name
Field2 : family
Field3 : Phone
Field4: City
Field5: Status

که در اینجا فیلد نام خانوادگی و شهر برای نودها هستند بدین ترتیب که تو کنترل tree شهرها به عنوان نودهای والد هستند و اشخاص نودهای زیر مجموعه ی هر شهر

programerinfonet
چهارشنبه 20 دی 1391, 11:46 صبح
نبود ؟ کسی جواب ما رو بده ؟

RED-C0DE
چهارشنبه 20 دی 1391, 12:01 عصر
اگه دقیقا بدونی چی و به چه صورت می خوایم کارمون راحتتره . بهتره صورت مسئله رو همیشه بشکنیم ب مسائل کوچیکتر و تکی..مثل کاری ک اینجا کردیم..و اینجوری صورت مسئلت می شه از اون مسائلی که همه باهاش سر و کار دارن نه یک مسئله ی خاص..و شانس اینکه با ی جستجو سریعتر ب ج برسی بیشتره..

اینجا واسه drag drop ی جستجو باید می زدی سریعتر ب ج می رسی و از انتظار بهتره :
http://barnamenevis.org/showthread.php?45377-Drag-Drop-%D8%AF%D8%B1-Tree-View&highlight=tree+drag+drop

RED-C0DE
چهارشنبه 20 دی 1391, 12:28 عصر
برای بخش دوم هم (نمی دونم از چ روشی برای کار با db استفاده می کنی)
بهتره 2تا جدول داشته باشی (جدول City‌و Person)
و یک جدول رابطه برای اینکه بگی هر شخص در چ شهری هست (جدول رابطه بین City , Person)
پس در نهایت اینو در نظر بگیر:


City
{
Id, Name , ...
}

Person
{
Id, Name , Family , Phone , ...
}

RelCityPerson
{
Id, CityFK, PersonFK
}


بعد از اینکه هر عمل DragDrop با موفقیت انجام شد (یعنی تو رویداد DragDrop) :
باید 2 نود مبدا و مقصد رو بدست بیاری (یعنی شهر مبدا و مقصد) و همینطور شخصی که منتقل شده (یعنی نودی که منتقل شده)
حالا چنتا راه واسه بروزرسانی بانک داری:
1. در جدول رابطه، سطرهای مربوط به شهر مبدا (نود مبدا در عمل dragDrop) و سطرهای مربوط به شهر مقصد (نود مقصد در عمل DragDrop)‌ رو حذف کنی و مجددا insert کنی.
2. یا می تونی فقط اون نودی (اون شخصی ) که جابجا شده رو در جدول رابطه تغییر بدی شهرشو