دسته بندی ها
16:41 1398/10/17

مخفی کردن ستون دیتا گرید

مشخصات سوال کننده :
کاربر : vahdat     امتیاز کاربر : 289     رتبه کاربر : 5
دسته بندی : WPF

به این سوال امتیاز بدهید    3
تعداد بازدید این سوال : 3617
پاسخ دهنده : fateme 17:05 1398/10/17

بهتر بود کدهایی که برای این کار رو نوشتید هم قرار بدید تا بدونیم چه کارهایی انجام دادید که نشده

اما یک راه حل کلی برای مخفی کردن ستون در DataGrid در WPF این هست :

  1. Header قرار ندید برای نام ستون. یعنی نام ستون خالی باشه
  2. مقدار Width رو برای ستون برابر با 0 قرار بدید
  3. مقدار Foreground رو برابر با White قرار بدید تا متن درون اون ستون با پس زمینه یک رنگ بشه و چیزی نمایش داده نشه

 

           <DataGridTextColumn Binding="{Binding ProductId}" Width="0">
                    <DataGridTextColumn.HeaderStyle>
                        <Style TargetType="{x:Type DataGridColumnHeader}">
                            <Setter Property="FontFamily" Value="B Yekan"/>
                            <Setter Property="FontSize" Value="12"/>
                            <Setter Property="FontWeight" Value="Bold"/>
                            <Setter Property="HorizontalContentAlignment" Value="Center"/>
                        </Style>
                    </DataGridTextColumn.HeaderStyle>

                    <DataGridTextColumn.ElementStyle>
                        <Style TargetType="{x:Type TextBlock}">
                            <Setter Property="Foreground" Value="White"/>
                            <Setter Property="FontFamily" Value="B Yekan"/>
                            <Setter Property="FontSize" Value="12"/>
                            <Setter Property="HorizontalAlignment" Value="Center"/>
                            <Setter Property="FontWeight" Value="Bold"/>
                            <Setter Property="VerticalAlignment" Value="Center"/>
                        </Style>
                    </DataGridTextColumn.ElementStyle>
                </DataGridTextColumn>

 

در کدهای بالا این کار انجام شده و ستون ProductID نمایش داده نمیشه. این لینک رو هم میتونید با توجه به کدهایی که نوشتید مطالعه کنید.

موفق باشید

به این پاسخ امتیاز بدهید    1
امتیاز: 1617 رتبه: 2
پاسخ دهنده : Sowgandi 08:17 1398/10/18

سلام. دوست عزیز برای اینکه بتونید از مقدار ستون مخفی شده استفاده کنید باید به روش زیر عمل کنید.

فرض کنید نام دیتاگرید شما DataGrid_Users باشد و  Table یا View که به دیتاگرید وصل شده برابر با Vw_Users باشد. در این حالت شما برای گرفتن مقدار ستون مخفی شده از کد زیر استفاده کنید. در این کد میخواهیم سن کاربران را بدست بیاریم.

var UserAge = (DataGrid_Users.SelectedItem as Vw_Users).Age;

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

موفق باشید.

به این پاسخ امتیاز بدهید    3
امتیاز: 871 رتبه: 3
پاسخ دهنده : vahdat 09:44 1398/10/18

 Sowgandi مرسی از پاسختون عالی بود

این سایت عالیه  
فقط به نظرم چند تا مشکل داره از نظر من 
اولا اینکه نمیشه روی پاسخی که داده شده نظر داد الان من میخوام برای پاسخ fateme نظر بدم یا بحثی کنم که این امکان وجود نداره همون ریپلای پیام در تلگرام (Reply Message)

دوم توو سوال قبلی که من داشتم اجازه نداد بیش از سه بار پاسخ بدم و من به جوابم نرسیدم و مجبور شدم بیخیال بشم این محدودیت هم فکر کنم درست نباشه

سوم من دیروز سوال فرستادم و کاربر fateme محبت کردن بلافاصله یه پاسخی دادن و من خواستم جواب ایشون رو بدم دوباره اجازه نداد و گفت باید 12 ساعت واسم این محدودیت هم چرایش برام سوال 

ولی بازم میگم خیلی عالی هستش این سایت 

به این پاسخ امتیاز بدهید    1
امتیاز: 289 رتبه: 5
پاسخ دهنده : saedbfd 13:18 1398/10/18

با تشکر از شما vahdat

در مورد ریپلای کردن پاسخ بزودی این امکان فراهم خواهد شد.

در مورد سایر محدودیتهای سایت هم بررسی مجدد می کنیم

موفق باشید

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