مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

satt22

عضویت از 1395/03/06

جستجو با انتخاب چند چک باکس در wpf

  • سه شنبه 9 آبان 1396
  • 01:16
تشکر میکنم

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

این قسمتی از دیتاگرید من:

 <DataGrid x:Name="dgv2"  Height="80" VerticalAlignment="Top" Width="911">               
                                <DataGrid.Columns>
                                    <DataGridCheckBoxColumn Binding="{Binding mozakar}" ClipboardContentBinding="{x:Null}" Header="مذکر" />
                                    <DataGridCheckBoxColumn Binding="{Binding moanas}" ClipboardContentBinding="{x:Null}" Header="مونث"/>
                                </DataGrid.Columns>

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

XML:

<DockPanel>

 <ComboBox x:Name="comboBox8" Width="404" IsEditable="True" >
                                    <CheckBox Name="chemozakar" Content="مذکر" HorizontalAlignment="Left" Width="402" Checked="CheckBox_Checked"/>
                                    <CheckBox Name="chemoanas" Content="مونث" HorizontalAlignment="Left" Width="402" Checked="chemoanas_Checked" />
                                    <CheckBox Name="chebozorg" Content="بزرگسال" HorizontalAlignment="Left" Width="402" Checked="chebozorg_Checked" />
                                    <CheckBox Name="chenozad" Content="نوزاد" HorizontalAlignment="Left" Width="402" Checked="chenozad_Checked"/>
                                    <CheckBox Name="cheomom" Content="عمومی" HorizontalAlignment="Left" Width="402" Checked="cheomom_Checked"/>
                                    <CheckBox Name="cheghalb" Content="قلب" HorizontalAlignment="Left" Width="402" Checked="cheghalb_Checked"/>
                                    <CheckBox Name="checheshm" Content="چشم" HorizontalAlignment="Left" Width="402" Checked="checheshm_Checked"/>
                                    <CheckBox Name="chezanan" Content="زنان و زایمان" HorizontalAlignment="Left" Width="402" Checked="chezanan_Checked"/>
                                    <CheckBox Name="chekodakan" Content="کودکان" HorizontalAlignment="Left" Width="402" Checked="chekodakan_Checked"/>
                                    <CheckBox Name="cheravan" Content="رووانپزشکی" HorizontalAlignment="Left" Width="402" Checked="cheravan_Checked"/>
                                    <CheckBox Name="chemasmom" Content="مسمومیت" HorizontalAlignment="Left" Width="402" Checked="chemasmom_Checked" />
                                    <CheckBox Name="chepoost" Content="پوست" HorizontalAlignment="Left" Width="402" Checked="chepoost_Checked "/>
                               </ComboBox>

</DockPanel>

C#:

 private void CheckBox_Checked(object sender, RoutedEventArgs e)
        {
            var Qsearch = from c in db.negasht.ToList()
                          where Convert.ToBoolean(c.mozakar) == chemozakar.IsChecked
                          select c;
            dgv2.ItemsSource = Qsearch;
        }
        
        private void chemoanas_Checked(object sender, RoutedEventArgs e)
        {
            var Qsearch = from c in db.negasht.ToList()
                          where Convert.ToBoolean( c.moanas) == chemoanas.IsChecked
                          select c;
            dgv2.ItemsSource = Qsearch;
        }

        private void chebozorg_Checked(object sender, RoutedEventArgs e)
        {
            var Qsearch = from c in db.negasht.ToList()
                          where Convert.ToBoolean(c.bozorgsal) == chebozorg.IsChecked
                          select c;
            dgv2.ItemsSource = Qsearch;
        }

        private void chenozad_Checked(object sender, RoutedEventArgs e)
        {
            var Qsearch = from c in db.negasht.ToList()
                          where Convert.ToBoolean(c.nozad) == chenozad.IsChecked
                          select c;
            dgv2.ItemsSource = Qsearch;
        }

        private void cheomom_Checked(object sender, RoutedEventArgs e)
        {
            var Qsearch = from c in db.negasht.ToList()
                          where Convert.ToBoolean(c.mozakar) == cheomom.IsChecked
                          select c;
            dgv2.ItemsSource = Qsearch;
        }

        private void cheghalb_Checked(object sender, RoutedEventArgs e)
        {
            var Qsearch = from c in db.negasht.ToList()
                          where Convert.ToBoolean(c.ghalb) == chemozakar.IsChecked
                          select c;
            dgv2.ItemsSource = Qsearch;
        }

        private void checheshm_Checked(object sender, RoutedEventArgs e)
        {
            var Qsearch = from c in db.negasht.ToList()
                          where Convert.ToBoolean(c.cheshm) == chemozakar.IsChecked
                          select c;
            dgv2.ItemsSource = Qsearch;
        }

        private void chezanan_Checked(object sender, RoutedEventArgs e)
        {
            var Qsearch = from c in db.negasht.ToList()
                          where Convert.ToBoolean(c.zanan) == chemozakar.IsChecked
                          select c;
            dgv2.ItemsSource = Qsearch;
        }

        private void chekodakan_Checked(object sender, RoutedEventArgs e)
        {
            var Qsearch = from c in db.negasht.ToList()
                          where Convert.ToBoolean(c.kodak) == chemozakar.IsChecked
                          select c;
            dgv2.ItemsSource = Qsearch;
        }

        private void cheravan_Checked(object sender, RoutedEventArgs e)
        {
            var Qsearch = from c in db.negasht.ToList()
                          where Convert.ToBoolean(c.ravan) == chemozakar.IsChecked
                          select c;
            dgv2.ItemsSource = Qsearch;
        }

        private void chemasmom_Checked(object sender, RoutedEventArgs e)
        {
            var Qsearch = from c in db.negasht.ToList()
                          where Convert.ToBoolean(c.masmom) == chemozakar.IsChecked
                          select c;
            dgv2.ItemsSource = Qsearch;
        }
        private void chepoost_Checked(object sender, RoutedEventArgs e)
        {
            var Qsearch = from c in db.negasht.ToList()
                          where Convert.ToBoolean(c.moanas) == chemozakar.IsChecked
                          select c;
            dgv2.ItemsSource = Qsearch;
        } 

با تشکر. ممنون

پاسخ های این پرسش

تعداد پاسخ ها : 1 پاسخ
کاربر سایت

سجاد باقرزاده

عضویت از 1392/02/24

  • شنبه 13 آبان 1396
  • 16:42

مشكل كد اينجاست كه شما هر بار داريد با زدن یک چک باکس لیست اطلاعاتتون رو از دیتابیس میارید و داخل سورس گرید میریزید :

 var Qsearch = from c in db.negasht.ToList()
                          where Convert.ToBoolean(c.moanas) == chemoanas.IsChecked
                          select c;
            dgv2.ItemsSource = Qsearch;

کاری که باید انجام دهید اینکه یکبار اطلاعات رو بیاورید و داخل یک لیست بریزید و لیست را وصل کنید به گرید و سپس روی آن لیست فیلتر انجام دهید که هر بار یک لیست تغییر کند و فیلترینگ روی اطلاعات قبلی انجام شود.

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)