我用的是Nhibernate的到的是一个Ilist结果集,怎样去给DateGrid赋值,
也就是说怎么把数据库的数据读到DateGrid中去。

解决方案 »

  1.   

    直接将这个List集合指定给该DataGrid的ItemsSource即可。
      

  2.   


    public class Person
        {
            public string Name { get; set; }
            public int Age { get; set; }
        } List<Person> list = new List<Person>();
                list.Add(new Person() { Name = "张三", Age = 22 });
                list.Add(new Person() { Name = "李四", Age = 22 });
                datagrid1.ItemsSource = list;  <DataGrid Name="datagrid1">
                <DataGrid.Columns>
                    <DataGridTemplateColumn Header="{Binding Name}" />
                </DataGrid.Columns>
            </DataGrid>
      

  3.   

    <Window x:Class="Stu_WPF.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            Title="MainWindow" Height="465" Width="653" Loaded="Window_Loaded">
        <Grid Height="427" Width="634">
            <Button Content="查找" Height="23" HorizontalAlignment="Left" Margin="381,6,0,0" Name="button1" VerticalAlignment="Top" Width="75" />
            <Label Content="姓名:" Height="28" HorizontalAlignment="Left" Margin="12,7,0,0" Name="label1" VerticalAlignment="Top" />
            <TextBox Height="23" HorizontalAlignment="Left" Margin="53,7,0,0" Name="textBox1" VerticalAlignment="Top" Width="120" />
            <Label Content="开学时间:" Height="28" HorizontalAlignment="Left" Margin="179,5,0,0" Name="label2" VerticalAlignment="Top" />
            <TextBox Height="23" HorizontalAlignment="Left" Margin="239,7,0,0" Name="textBox2" VerticalAlignment="Top" Width="120" />
            <DataGrid AutoGenerateColumns="True" Height="107" HorizontalAlignment="Left" Margin="12,36,0,0" Name="dataGrid1" VerticalAlignment="Top" Width="509">
                <DataGrid.Columns>
                    <DataGridTextColumn Header="Id" Binding="{Binding Path= Id}"/>
                    <DataGridTextColumn Header="姓名" Binding="{Binding Path=Name}" />
                    <DataGridTextColumn Header="年龄" Binding="{Binding Path=Sex}"/>
                    <DataGridTextColumn Header="所在专业" Binding="{Binding Path=Tie}" />
                    <DataGridTextColumn Header="所在系" Binding="{Binding Path=Profession}"/>
                    <DataGridTextColumn Header="开学时间" Binding="{Binding Path=Starttime}"/>
                    <DataGridTextColumn Header="地址" Binding="{Binding Path=Address}"/>
                </DataGrid.Columns>
            </DataGrid>
        </Grid>
    </Window>
    窗体加载事件
      private void Window_Loaded(object sender, RoutedEventArgs e)
            {
               IList<Stuinfo> list = dao.getAll();
               this.dataGrid1.ItemsSource = list;
                
            }
    可是怎么不能啊
      

  4.   

    你把list的count弹出来看下有几条数据。你确定有数据?
      

  5.   

    AutoGenerateColumns="True" 貌似不需要再定义 Columns 了吧还有,报什么错呢? dao.getAll() 是什么?
      

  6.   


    AutoGenerateColumns="True" 应该改成False。不过你数据不显示不是这个问题,应该是你取数据有问题。
      

  7.   

    public static ISessionFactory getSessionFactory() 
            {
                1 Configuration cf= new Configuration().Configure("hibernate.cfg.xml");
                2 factory = cf.BuildSessionFactory();
                3 return factory;
            } 
    1那里出问题了 The invocation of the constructor on type 'Stu_WPF.MainWindow' that matches the specified binding constraints threw an exception.' Line number '3' and line position '9'.
      

  8.   

     public IList<Stuinfo> getAll() 
            {
                ISession session = factory.OpenSession();
                IList<Stuinfo> list = session.CreateQuery("from Stuinfo").List<Stuinfo>();
                return list;
            }
      

  9.   

    那就是你使用hibernate有问题了。