سلام. دارم یک برنامه مینویسم که در اون یک قسمت جستجوی پیشرفته با چند چک باکس داره. مشکل اینجاست که وقتی 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;
}
با تشکر. ممنون
مشكل كد اينجاست كه شما هر بار داريد با زدن یک چک باکس لیست اطلاعاتتون رو از دیتابیس میارید و داخل سورس گرید میریزید :
var Qsearch = from c in db.negasht.ToList() where Convert.ToBoolean(c.moanas) == chemoanas.IsChecked select c; dgv2.ItemsSource = Qsearch;
کاری که باید انجام دهید اینکه یکبار اطلاعات رو بیاورید و داخل یک لیست بریزید و لیست را وصل کنید به گرید و سپس روی آن لیست فیلتر انجام دهید که هر بار یک لیست تغییر کند و فیلترینگ روی اطلاعات قبلی انجام شود.
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)