简体   繁体   English

如何获取datagridview中的所有行?

[英]How to get all rows in datagridview?

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 我有datagridview与名为DGItem的类绑定,我通过linq查询获取datagrid的值我想得到所有这些值

tried to take it from DGItem but only the last value I get 试图从DGItem获取它,但只是我得到的最后一个值

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 : 而我的wpf是:

 <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];
            }
        }

    }

Im pretty sure you error is with this line 我很确定你错误就是这条线

System.Data.DataRowView selectedFile = (System.Data.DataRowView)IstmaraB.SelectedItems[i]; 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". 我也不确定“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]; MyArray [i] = IstmaraB.SelectedItems [i];

If that is not what your after you may need to clarify. 如果那不是您之后可能需要澄清的内容。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM