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

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

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

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

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

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


dataGridView.Columns["نام_ستون"].Visible = false;

این کد ستون را مخفی می کند ولی شما همچنان می توانید به مقادیر آن از طریق نمونه ای از ردیف های دیتاگرید دسترسی پیدا کنید. مثلاً:


var مقادیر = dataGridView.Rows[ردیف_موردنظر].Cells["نام_ستون"].Value;

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

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : 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
امتیاز: 1635 رتبه: 2
پاسخ دهنده : Sowgandi 08:17 1398/10/18

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

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

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

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

موفق باشید.

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

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

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

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

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

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

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

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

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

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

موفق باشید

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