دوستان ممنون میشم کمک کنید راجب ساختار درختی. مثلا اسم کشور ها که زیر شاخه هر کدوم اسم شهر ها و زیر شاخه شهر ها روستاها باشه.
کلا هم جدول مورد نیاز هم نحوه کار باهاش. با tree view یا هر چیز دیگه
دوستان ممنون میشم کمک کنید راجب ساختار درختی. مثلا اسم کشور ها که زیر شاخه هر کدوم اسم شهر ها و زیر شاخه شهر ها روستاها باشه.
کلا هم جدول مورد نیاز هم نحوه کار باهاش. با tree view یا هر چیز دیگه
ببن توم اسم شهرها یا هر ایتمی برای خودش یه کد یا id داره حالا تو باید یه فیلد پدر هم داشته باشی مثلا بگی مازندارن کدش هست 1001 ساری کدش 2001 ولی کد پدر ساری هست 1001 یا قائمشهر کدش هست 2002 کد پدرش هست 1001 دقت کنی ساری و قائمشهر میشن زیر مجموعه مازندران چون پدرشون گفتیم مازندرانه حالا A مثلا کد پدرش میشه 2002 یعنی A زیر مجموعه قائمشهر میشه.
اگه میخوای توی صفحات وب پیاده سازی کنی میتونی از jstree استفاده کنی بنظر من ابزار ققدرتمندیه برای تشکیل درخت
برای جدول هم همنطور که دوستمون گفت میتونی از ساختار parent child استفاده کنی
یه نگاهی به لینک زیر بنداز
https://www.jstree.com/
نه با وین فرم کار میکنم . البته یه تابع بازگشتی پیدا کردم و تونستم تو درخت ترسیم کنم.
private void PopulateTreeView(DataTable dtParent, int parentId, TreeNode treeNode)
{
foreach (DataRow row in dtParent.Rows)
{
TreeNode child = new TreeNode
{
Text = row["Name"].ToString(),
Value = row["Id"].ToString()
};
if (parentId == 0)
{
TreeView1.Nodes.Add(child);
DataTable dtChild = this.GetData("SELECT Id, Name FROM VehicleSubTypes WHERE VehicleTypeId = " + child.Value);
PopulateTreeView(dtChild, int.Parse(child.Value), child);
}
else
{
treeNode.ChildNodes.Add(child);
}
}
}
الان به نظرتون کامپوننتی هست که بشه این درخت رو به صورت شکلی که تو نرم افزار ویزیو رسم میشه، رسم کرد؟
یا روش دیگه ای
آخرین ویرایش به وسیله Mahmoud.Afrad : چهارشنبه 14 تیر 1396 در 21:46 عصر دلیل: بهم ریختگی کدها
به نظرم با treeview میشه اینکارو کرد
توی toolbox هستش میتونی ازش استفاده کنی
این لینکم توضیح داده چطور ایتم اضافه کنی
https://msdn.microsoft.com/en-us/lib...(v=vs.71).aspx
آخرین ویرایش به وسیله Mahmoud.Afrad : چهارشنبه 14 تیر 1396 در 21:46 عصر
مهندس جان ببینید من تو طراحی جدول این موندم. اگه امکانش هست راهنمایی کنید.
Untitled.png
یعنی تو طراحی جدولش مشکل دارین؟ خب اینکه چیز ساده ایه، اینم ساختار جدولاتون:Country table: Id, Name
States table: Id, Name, CountryId
Cities table: Id, Name, StateId
Areas table: Id, Name, CityId
این جدولا بصورت کاملا ساده با سه تا فیلد پیاده سازی شدن، شما میتونی هر فیلدی که دلت خواست رو بهشون اضافه کنی، فقط میمونه تابع انتشار درخت که اونم پیدا کردین و با یکم دستکاری، به چیزی که مدنظرتون هست میرسین
من خودم همین کارو با جدول parent child انجام دادم
کلا یه جدول میسازی
گزینه های id و name که مشخص هستن parent id شماره منطقه بالاتره که باید allow null باشه و type هم نوع منطقه هستش که میتونه کشور استان شهرستان و... باشه
region_Table:id,Name,Parent_id,Region_type
شما کافیه کشور ایران که وارد میکنی رو parent رو null بذاری یه حلقه درست کنی که از null شروع کنه به اضافه کردن به درخت و مرحله دو فیلد هایی که parent برابر با id فیلد اول هست رو اضافه کنه به همین ترتیب.
اینم تصویره درختیه که خودم با همین روش پیاده کردم
ببخش دوست عزیز اگه طول کشید چند روزی درگیر کار بودم شرمنده
اینم فایل پروژه
آخرین ویرایش به وسیله Mahmoud.Afrad : دوشنبه 19 تیر 1396 در 17:18 عصر
سلام
اگر از SQLSever بالای 2005 استفاده می کنید نیازی به برنامه نویسی سمت #C ندارید با CTE اینکار را انجام دهید در اینترنت سرچ کنید با چند خط کد ساده SQL درخت با هر سطح را فقط با سه فیلد ساده شبیه سازی کنید :
کد نود / کد پدر / عنوان نود
دوستان ممنون میشم در موردCTE برای ایجاد ساختار درختی که در پست 7 نشون دادم کمکم کنید.
سلام
یک کدی شبیه این لازم دارید :
With MyCTE(mPK,mFK) As
(
Select PK,FK
From MyTree
Where FK=0
Union All
Select PK=PK,FK=FK
From MyTree
Where FK=mPK
)
Select *
From MyCTE
سلام
این موضوع مربوط به بخش SQLServer است ولی کلی :
شما یک جدول بنام MyTree سه فیلدی شامل Pk نود (همان کلید جدول) , Pk پدر (همان Fk) و نام آیتم مورد نظر ایجاد کنید و یک SP بنویسید که شامل دستور ارائه شده باشد خروجی این دستور کل درخت شما خواهد بود