0

I have datagridview binded with class called DGItem and I get the values of the datagrid by linq query I want to get all these values

tried to take it from DGItem but only the last value I get

CollegeContext cd = new CollegeContext();          
Teacher teaherCB = _TeachersComboBox.SelectedItem as Teacher;         

var query = (from sc in cd.SubjectTeachers
             join s in cd.Subjects on sc.IdSubject equals s.Id
             join t in cd.Teachers on sc.IdTeacher equals t.Id
             join wh in cd.WorkHours on t.IdWorkHours equals wh.Id
             join b in cd.Branches on sc.IdBranch equals b.Id
             where sc.IdTeacher== teaherCB.Id

             select new DGItem
             {
                 Name = t.Name,
                 Rank = wh.Rank,
                 HoursOfquerm = wh.HoursOfQuorum,
                 Namesub = s.Name,
                 Academic = s.Academic,
                 Virtual = s.Virtual, 
                 Exprement = s.Exprement,
                 TotalHour = s.TotalHours

             } ).ToList();

IstmaraB.ItemsSource = query;

public class DGItem            
    {            
        public String Name { get; set; }          
        public String Rank { get; set; }           
        public int? HoursOfquerm { get; set; }          
        public String Namesub { get; set; }          
        public int? Academic { get; set; }         
        public int? Virtual { get; set; }           
        public int? Exprement { get; set; }          
        public int? TotalHour { get; set; }        

    }  

and my wpf is :

 <Button Content="select all" HorizontalAlignment="Left" Margin="11,382,0,0" VerticalAlignment="Top" Width="94" Click="Button_Click"/>

 <DataGrid x:Name="IstmaraB" HorizontalAlignment="Left" AutoGenerateColumns="False" IsReadOnly="True"  Height="327" EnableRowVirtualization="True" ItemsSource="{Binding }" FlowDirection="RightToLeft" Margin="110,147,0,0" VerticalAlignment="Top" Width="652" RowDetailsVisibilityMode="VisibleWhenSelected">
        <DataGrid.Columns>
            <DataGridTextColumn   Binding="{Binding Name}"  Header="الاسم" Width="auto"/>
            <DataGridTextColumn   Binding="{Binding Rank}"  Header="الدرجة" Width="auto"/>
            <DataGridTextColumn   Binding="{Binding HoursOfquerm}"  Header="النصب القانوني" Width="auto"/>
            <DataGridTextColumn   Binding="{Binding Namesub}"  Header="المواد التي يقوم بتدريسها" Width="auto"/>
            <DataGridTextColumn   Binding="{Binding Academic}"  Header="نظري" Width="auto"/>
            <DataGridTextColumn   Binding="{Binding Virtual}"  Header="عملي" Width="auto"/>
            <DataGridTextColumn   Binding="{Binding Exprement}"  Header="تمارين" Width="auto"/>
            <DataGridTextColumn   Binding="{Binding TotalHour}"  Header="مجموع" Width="auto"/>
        </DataGrid.Columns>
    </DataGrid>

and i tried to do that :

 private void Button_Click(object sender, System.Windows.RoutedEventArgs e)
    {
        IstmaraB.SelectAll();
        if (IstmaraB.SelectedItems.Count > 0)
        {
            for (int i = 0; i < IstmaraB.SelectedItems.Count; i++)
            {
                System.Data.DataRowView selectedFile = (System.Data.DataRowView)IstmaraB.SelectedItems[i];
            }
        }

    }
NetMage
  • 26,163
  • 3
  • 34
  • 55
Hady Salah
  • 13
  • 5

1 Answers1

0

Im pretty sure you error is with this line

System.Data.DataRowView selectedFile = (System.Data.DataRowView)IstmaraB.SelectedItems[i];

As I am reading it, Its just going to return whatever happened happen to be last. I am also unsure what you mean by "Get". Do you mean throw into an array or list? If thats what you are after you can simply populate an array with values in the data grid using the line above like so,

MyArray[i] = IstmaraB.SelectedItems[i];

If that is not what your after you may need to clarify.

Diven Desu
  • 41
  • 6