دسته بندی ها
21:13 1401/11/10

نمایش اطلاعات به صورت درختوراه و طراحی چارت سازمان در Asp.Net Core

مشخصات سوال کننده :
کاربر : MahdiSharifiAspNetCore     امتیاز کاربر : 3     رتبه کاربر : 136
دسته بندی : Asp.net Core

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 1976
2 نظر
fateme : لطفا از کدهای خودتون عکس قرار ندید. می تونید از طریق دکمه Code در ادیتور کدهای خودتون رو قرار بدید. اما در مورد فیلدهای جدولتون باید بگم که ساختارتون درسته و می تونید با همین ساختار جدول اطلاعات رو به صورت درختواره نمایش بدید.

امتیاز کاربر : 1635   رتبه کاربر : 2   تاریخ ثبت : 10:01 1401/11/11
saedbfd : شما میخواید چجوری اطلاعات رو نمایش بدید ؟ یعنی پلاگین خاصی برای این کار می خواید استفاده کنید ؟

امتیاز کاربر : 1664   رتبه کاربر : 1   تاریخ ثبت : 10:03 1401/11/11
هوش مصنوعی

پاسخ هوش مصنوعی

برای طراحی یک چارت سازمانی در پروژه Asp.Net Core و مرتب سازی داده ها به صورت درختی، می توانید از ساختارهای داده ای خاص مانند لیست های تو در تو استفاده کنید. به طور کلی، هر نود (یا گره) از درخت می تواند شامل شناسه، نام، و یک لیست از زیرشاخه ها باشد. به این ترتیب، می توانید به راحتی سلسله مراتب را مشخص کنید.

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

public class Employee
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int? ManagerId { get; set; } // شناسه مدیر، اگر وجود داشته باشد.
    public List Subordinates { get; set; } = new List();
}

برای ساختاردهی درخت از دیتا بیس، ابتدا تمامی اطلاعات را از دیتا بیس بارگذاری کنید و سپس آن ها را به صورت درختی سازماندهی کنید. به عنوان مثال:

public List BuildTree(List employees)
{
    var lookup = employees.ToLookup(e => e.ManagerId);
    foreach (var employee in employees)
    {
        employee.Subordinates = lookup[employee.Id].ToList();
    }
    return lookup[null].ToList(); // برگشت به ریشه ها
}

برای نمایش اطلاعات در قالب چارت سازمانی، می توانید از کتابخانه های جاوااسکریپت مانند jsTree یا D3.js استفاده کنید که قابلیت های خوبی برای نمایش درخت ها دارند. در اینجا یک مثال ساده از استفاده از jsTree برای نمایش درخت آورده شده است:

$(function() {
    $('#tree').jstree({
        'core': {
            'data': [
                { "id": "1", "parent": "#", "text": "مدیر کل" },
                { "id": "2", "parent": "1", "text": "مدیر بخش 1" },
                { "id": "3", "parent": "1", "text": "مدیر بخش 2" },
                { "id": "4", "parent": "2", "text": "کارمند 1" },
                { "id": "5", "parent": "2", "text": "کارمند 2" }
            ]
        }
    });
});

این راهکار باعث می شود تا شما بتوانید به سادگی اطلاعات را به صورت سلسله مراتبی مرتب کرده و به نمایش بگذارید. همچنین، از خروجی های ساختار داده برای استفاده های بعدی نیز می توانید استفاده کنید.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
هوش مصنوعی

پاسخ هوش مصنوعی

برای ایجاد چارت سازمانی در ASP.NET Core، نیاز است که داده های درختی خود را در یک ساختار مناسب ذخیره کنید. می توانید از یک جدول در دیتابیس استفاده کنید که شامل اطلاعات هر کارمند و شناسه ی مدیر آن باشد. به صورت کلی، ساختار جدول می تواند به این صورت باشد:


CREATE TABLE Employees (
    Id INT PRIMARY KEY,
    Name NVARCHAR(100),
    Position NVARCHAR(100),
    ManagerId INT,
    FOREIGN KEY (ManagerId) REFERENCES Employees(Id)
);

در اینجا، هر کارمند یک شناسه (Id) دارد و شناسه مدیری که او به آن مربوط است (ManagerId) در جدول قرار دارد. با استفاده از این ساختار، می توانید هر کارمند را به مدیرش متصل کنید.

برای خواندن و نمایش داده ها به صورت درختی، نیاز به یک الگوریتم برای بارگذاری داده ها دارید که بتوانید از آن برای تولید ساختار درختی استفاده کنید. می توانید از یک متد بازگشتی برای این کار استفاده کنید. به عنوان مثال:


public class Employee
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Position { get; set; }
    public int? ManagerId { get; set; }
    public List DirectReports { get; set; } = new List();
}

public List BuildHierarchy(List employees)
{
    var lookup = employees.ToDictionary(e => e.Id);
    foreach (var employee in employees)
    {
        if (employee.ManagerId.HasValue)
        {
            lookup[employee.ManagerId.Value].DirectReports.Add(employee);
        }
    }
    return employees.Where(e => e.ManagerId == null).ToList();
}

این متد یک لیست از کارمندان را گرفته و به طور خودکار درختی از کارمندان و زیرمجموعه هایشان را می سازد. در نهایت، می توانید این داده ها را به دلخواه خود در یک کنترلر و نمای مناسب در ASP.NET Core نمایش دهید.

برای نمایش چارت سازمانی، می توانید از کتابخانه هایی مانند Chart.js یا D3.js استفاده کنید که می توانند این داده ها را به صورت بصری و زیبا نمایش دهند.

در نهایت، پیشنهاد می کنم که برای بهینه سازی، داده ها را به صورت صفحه بندی بارگذاری کنید و در صورت نیاز از lazy loading برای بارگذاری زیرمجموعه ها استفاده کنید.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : MahdiSharifiAspNetCore 12:32 1401/11/11

این یک نمونه از توی گوگل هست که من هم یک همچین چیزی رو توی یک view میخوام نمایش بدم 

حالا اگر من اطلاعات رو بدون هیچ sort کردنی با Json درخواست کنم آیا توی جی کوئری پلاگینی هست که بشه بر اساس آیدی ها این درختواره رو در بیاره یا اینکه مثلا خیلی ساده بدون هیچ پلاگینی بخوام این رو دربیارم سمت سی شارپ چه کوئری رو باید بنویسم الان با مثلا 5 یا 6 تا حلقه داره کار می کنه اما مشکل اینجاست که اگر بخوام یک شاخه دیگه اضافه کنم باید یک حلقه دیگه بزنم و داینامیک نیست مثلا با یکی دو تا حلقه کل کار اوکی بشه توی نمایش دادنش

به این پاسخ امتیاز بدهید    0
امتیاز: 3 رتبه: 136
1 نظر
saedbfd : پلاگین jstree استفاده کنید

امتیاز کاربر : 1664   رتبه کاربر : 1   تاریخ ثبت : 05:22 1401/11/11
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود