Click here to Skip to main content
12,999,417 members (83,835 online)
Rate this:
Please Sign up or sign in to vote.
See more:
I have listbox with checked box as following, & it binding its data from sql server database,
, I want to get selected items value When I run this but I got this error

Unable to cast object of type 'System.Data.DataRowView' to type 'System.Windows.Controls.CheckBox'.

        <DataTemplate x:Key="NameColumnTemplate">
            <CheckBox Height="20"  FontFamily="Arial" FontSize="14"  Content="{Binding Path=PermissionDescription}" 
                      Tag="{Binding PermissionID}" HorizontalAlignment="Stretch" VerticalAlignment="Center"
<ListBox HorizontalAlignment="Stretch" Margin="12,12,136,21" Name="lstEmployees" 
                          VerticalAlignment="Stretch" ItemsSource="{Binding Tables[0]}"  
                          ItemTemplate="{StaticResource NameColumnTemplate}" 
                          ScrollViewer.VerticalScrollBarVisibility="Auto" removed="{x:Null}" 
                 SelectionChanged="lst_SelectionChanged" CheckBox.Click="lst_SelectionChanged"/>
<Button Content="listbox" Height="23" HorizontalAlignment="Left" Margin="214,207,0,0" Name="btnShowSelectedItems" 
                VerticalAlignment="Top" Width="75" Click="btnShowSelectedItems_Click" />

 public Window2()
            // bind data 
            lstEmployees.DataContext = SelJobsCat();
 private void btnShowSelectedItems_Click(object sender, RoutedEventArgs e)
            foreach (CheckBox item in lstEmployees.Items)
                if (item.IsChecked == true)
                    System.Windows.MessageBox.Show((item.Content + " is checked."));
        private void lst_SelectionChanged(object sender, RoutedEventArgs e)
            if (e.OriginalSource is CheckBox)
                lstEmployees.SelectedItem = e.OriginalSource;
            if (lstEmployees.SelectedItem == null) return;

where is my error please, Thanks
Posted 29-Jun-13 5:19am

1 solution

Rate this: bad
Please Sign up or sign in to vote.

Solution 1

Use the CheckBoxList's GetItemChecked or GetItemCheckState method

for (int i = 0; i < lstEmployees.Items.Count; i++)
  if (clbIncludes.GetItemChecked(i))
    System.Windows.MessageBox.Show((item.Content + " is checked."));
    // Do unselected stuff
or if you want to only include actually checked items:
if (stEmployees.GetItemCheckState(i) == CheckState.Checked)
or listitem.selected:
foreach (ListItem listItem in lstEmployees.Items)
    if (listItem.Selected) {
        //do some work
    else {
        //do some work

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

  Print Answers RSS
Top Experts
Last 24hrsThis month

Advertise | Privacy | Mobile
Web02 | 2.8.170624.1 | Last Updated 29 Jun 2013
Copyright © CodeProject, 1999-2017
All Rights Reserved. Terms of Service
Layout: fixed | fluid

CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100