دسته بندی ها
15:21 1398/11/12

استفاده از دیتا گرید تو در تو در WPF

مشخصات سوال کننده :
کاربر : sobhan     امتیاز کاربر : 6     رتبه کاربر : 80
دسته بندی : WPF سی شارپ

به این سوال امتیاز بدهید    1
تعداد بازدید این سوال : 2904
هوش مصنوعی

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

برای مدیریت و پر کردن دیتاگرید های تو در تو در WPF، شما باید از کامپوننت های مختلفی استفاده کنید و ارتباطات لازم را در کد پشتی (xaml.cs) بسازید. به عنوان یک شروع، شما می توانید از رویداد DataGrid.RowDetailsVisibilityChanged برای تعیین زمان بارگذاری داده های هر دیتاگرید استفاده کنید.

زیر به یک مثال از نحوه پیاده سازی بارگذاری داده ها برای دیتاگرید دوم (محدوده) و دیتاگرید سوم (محله) در نظر داشته باشید:


private void dgMantaghe_RowDetailsVisibilityChanged(object sender, DataGridRowDetailsEventArgs e)
{
    if (e.DetailsVisibility == Visibility.Visible)
    {
        var selectedMantaghe = (ViewMantaghe)e.Row.Item;

        // بارگذاری داده های دیتاگرید دوم (محدوده)
        var mahdodeQuery = DbDatabase.Database.SqlQuery("SELECT * FROM Mahdode WHERE MantagheID = @MantagheID", 
            new SqlParameter("@MantagheID", selectedMantaghe.MantagheID));
        dgMahdode.ItemsSource = mahdodeQuery.ToList();
    }
}

همچنین برای بارگذاری دیتاگرید سوم (محله) هنگامی که ردیف مربوط به محدوده انتخاب می شود، می توانید از رویداد DataGrid.RowDetailsVisibilityChanged برای dgMahdode استفاده کنید:


private void dgMahdode_RowDetailsVisibilityChanged(object sender, DataGridRowDetailsEventArgs e)
{
    if (e.DetailsVisibility == Visibility.Visible)
    {
        var selectedMahdode = (Mahdode)e.Row.Item;

        // بارگذاری داده های دیتاگرید سوم (محله)
        var mahalQuery = DbDatabase.Database.SqlQuery("SELECT * FROM Mahal WHERE MahdodeID = @MahdodeID", 
            new SqlParameter("@MahdodeID", selectedMahdode.MahdodeID));
        dgMahal.ItemsSource = mahalQuery.ToList();
    }
}

برای این که رویدادهای فوق درست کار کنند، اطمینان حاصل کنید که در XAML، رویدادها را به درست تعریف کرده اید:




با انجام این کار، می توانید دیتاگرید های تو در تو خود را طوری تنظیم کنید که وقتی یک ردیف را انتخاب می کنید، دیتاگرید های زیرین با داده های مرتبط بارگذاری شوند.

اگر سوال بیشتری دارید یا نیاز به راهنمایی بیشتر دارید، در خدمت شما هستم!

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : sobhan 21:04 1398/11/13

دوستان کسی راه کاروپیشنهادی ندارید؟

به این پاسخ امتیاز بدهید    0
امتیاز: 6 رتبه: 80
پاسخ دهنده : fateme 21:27 1398/11/13

بنظرم بهتره از کمبوباکس در سلولهای DataGrid در Wpf استفاده کنید. چون دیتاگرید تو در تو زیاد منطقی نیست.

 

مثلا لیست استانها رو دارید در یک جدول. یک ستون به نام شهرها ایجاد کنید که محتویاتش یک کمبوباکس هست شامل شهرهای اون استان. پیاده سازی این مکانیزم خیلی ساده تره تا ۲ تا datagrid تو درتو

 

توی گوگل این سرچ رو کنید

به این پاسخ امتیاز بدهید    0
امتیاز: 1635 رتبه: 2
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود