دسته بندی ها
18:27 1400/03/13

تغییر رنگ یک سطر یا متن در DataGrid در WPF با اعمال شرط

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

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 4027
پاسخ دهنده : Sowgandi 09:55 1400/03/14

سلام دوست گرامی

شما چون شرطی که میخواهید اعمال کنید حالت محاسباتی داره باید ابتدا داخل دیتابیس و ویوی خودتون یک فیلد بسازید و شرط خودتون رو اونجا روی فیلد اعمال کنید و خروجی رو به صورت صفر و یک یا یک عدد دریافت کنید. برای اینکار در Sql Server از دستور select case استفاده کنید.

(select case when TotalCost > 500 then 1 when TotalCost < 500 then 2 end) as ColorID

در کد فوق ما گفتیم اگر مقدار TotalCost بزرگتر از 500 بود عدد 1 و اگر کوچکتر از 500 بود عدد 2 رو نمایش بده و نام این فیلد رو ColorID گذاشتیم. 

حالا وارد نرم افزارتون بشید و در قسمت تگ دیتاگرید خودتون از کد <DataGrid.RowStyle> مطابق نمونه زیر استفاده کنید.

    <DataGrid x:Name="MyDataGrid" IsReadOnly="True" Width="600" Height="400">
            
            <DataGrid.RowStyle>
                <Style TargetType="DataGridRow">
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding ColorID}" Value="1">
                            <Setter Property="Background" Value="Red" />
                        </DataTrigger>
                        <DataTrigger Binding="{Binding ColorID}" Value="2">
                            <Setter Property="Background" Value="Green" />
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
            </DataGrid.RowStyle>
            
        </DataGrid>

توی کد بالا گفتیم که اگر مقدار فیلد ColorID برابر بود با عدد 1 کل ردیف قرمز بشه و اگر برابر بود با عدد 2 کل ردیف سبز بشه

ویرایش شده در جمعه 14 خرداد 1400 ساعت 10:03:12
به این پاسخ امتیاز بدهید    3
امتیاز: 871 رتبه: 3
1 نظر
yaser050 : واقعا ممنون دست شما درد نکنه. تست مکینم

امتیاز کاربر : 6   رتبه کاربر : 80   تاریخ ثبت : 04:45 1400/03/14
پاسخ دهنده : Arun 20:26 1400/06/14

می توانید از کنترل های همگام سازی WPF Datagrid استفاده کنید.
https://www.syncfusion.com/wpf-controls/datagrid

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