locked
怎么绑定Linq的匿名类到Datagrid? RRS feed

  • 问题

  •         Dim aa = From i In DS.MemberUsers Select new with {.Name=i.Name, .Address=i.Address }
            DG.ItemsSource = aa

    调试可以看到aa是有值的,但Datagrid没有任何显示啊?


    不吝赐教
    2010年11月21日 13:19

答案

  • 可以通过自己写Convert转换动态类。匿名类因为类型不能确定,目前好像还没有好的方法可以绑定!


    努力!完成了js解析器,还差一个svg插件,一个绘图程序,做好自己,呵呵~!
    • 已标记为答案 kyle.cj 2010年12月28日 13:26
    2010年12月2日 12:58

全部回复

  • 可能你datagrid设置了数据绑定,而这些绑定都没有你返回的字段.


    2010年11月22日 4:28
  • 可能你datagrid设置了数据绑定,而这些绑定都没有你返回的字段.


    没有,我的datagrid没有绑定的(<sdk:DataGrid Grid.Row="1" Name="DG" AutoGenerateColumns="True" />) 其他的都是默认设置
    DG.ItemsSource = aa   我调试DG.itemsource绑定后是有值的,DG能看到有很多空的行,但没有值

    版主是不是说,Datagrid是支持匿名绑定的。那我的问题在哪呢?


    不吝赐教
    2010年11月22日 7:13
  • 把你的xaml页完整的xaml代码粘出来,很可能你引用的sdk有问题,建议使用blend来直接datagrid的创建,在vs2010中创建datagrid有时会引用错xaml空间.
    2010年11月22日 7:16
  • 把你的xaml页完整的xaml代码粘出来,很可能你引用的sdk有问题,建议使用blend来直接datagrid的创建,在vs2010中创建datagrid有时会引用错xaml空间.

    <navigation:Page x:Class="TestFunction.FPS"
               xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
               xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
               xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
               xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
               xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk
               xmlns:toolkit="http://schemas.microsoft.com/winfx/2006/xaml/presentation/toolkit"
               xmlns:datagrid="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data"
               mc:Ignorable="d"
               xmlns:navigation="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation"
               d:DesignWidth="674" d:DesignHeight="374"
               Title="FPS Page"  >

         <Grid x:Name="LayoutRoot">
                     <Grid.ColumnDefinitions>
                            <ColumnDefinition/>
                            <ColumnDefinition/>
                     </Grid.ColumnDefinitions>
                     <Border BorderThickness="3" BorderBrush="#FFD3D9E3">
                            <datagrid:DataGrid Name="DG" />
                     </Border>
                     <Border Grid.Column="1" BorderThickness="3" BorderBrush="#FFD3D9E3">
                            <sdk:DataGrid Name="GD" />
                     </Border>
           </Grid>
    </navigation:Page>

        Dim DS As TestDSL
        Public Sub New()
            InitializeComponent()
            DS = New TestDSL
            DS.Load(DS.GetMemberUserQuery)
        End Sub
        Private Sub A1()
            DG.ItemsSource = DS.MemberUsers
            GD.ItemsSource = DS.MemberUsers
        End Sub
        Private Sub A2()
            Dim aa = From i In DS.MemberUsers Select i.Name, i.Address
            DG.ItemsSource = aa
            GD.ItemsSource = aa
        End Sub

    执行A1没有问题,,,可以正常显示结果,,,执行A2,Debug发现Datagrid有值,但只能显示空行,没有值显示出来


    不吝赐教
    2010年11月22日 11:20
  • <datagrid:DataGrid Name="GD" />

    改成上边那样试试


    2010年11月22日 11:29
  • <datagrid:DataGrid Name="GD" />

    改成上边那样试试



                            <datagrid:DataGrid Name="DG" />
                            <sdk:DataGrid Name="GD" />

    这二个都是启用的,,同时绑定了,还是只有空行,没有显示出值啊

    点解啊?

     


    不吝赐教
    2010年11月22日 13:39
  • <datagrid:DataGrid Name="GD" />

    改成上边那样试试



    <datagrid:DataGrid Name="DG" />
    <sdk:DataGrid Name="GD" />

    这二个都是启用,绑定后,二个Datagrid都是显示空行,不显示值?

    点解啊?


    不吝赐教
    2010年11月22日 14:20
  • <UserControl x:Class="DYCom股票客户端.MainPage"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d"
        xmlns:data="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data"
        d:DesignHeight="371" d:DesignWidth="555">

        <Grid x:Name="LayoutRoot" Background="White">
            <data:DataGrid Height="109" HorizontalAlignment="Left" IsReadOnly="True" Margin="10,10,0,0" x:Name="dg" VerticalAlignment="Top" Width="545" />    </Grid>
    </UserControl>

    这个是我工作正常的xaml代码。

    工程文件可以到以下地址下载:

    http://funsl.com/content/silverlight%E8%82%A1%E7%A5%A8%E5%AE%9E%E6%97%B6%E6%95%B0%E6%8D%AE%E6%8E%A8%E9%80%81%E7%A4%BA%E4%BE%8Bpower-dycom


    2010年11月22日 14:26
  • <UserControl x:Class="DYCom股票客户端.MainPage"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d"
        xmlns:data="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data"
        d:DesignHeight="371" d:DesignWidth="555">

        <Grid x:Name="LayoutRoot" Background="White">
            <data:DataGrid Height="109" HorizontalAlignment="Left" IsReadOnly="True" Margin="10,10,0,0" x:Name="dg" VerticalAlignment="Top" Width="545" />    </Grid>
    </UserControl>

    这个是我工作正常的xaml代码。

    工程文件可以到以下地址下载:

    http://funsl.com/content/silverlight%E8%82%A1%E7%A5%A8%E5%AE%9E%E6%97%B6%E6%95%B0%E6%8D%AE%E6%8E%A8%E9%80%81%E7%A4%BA%E4%BE%8Bpower-dycom



    晕死,在funsl.com网站新注册用户,报错说,发邮件失败,,,我拿不到密码,不能登陆下载你的工程文件,,,
    不吝赐教
    2010年11月23日 7:24
  • http://funsl.com/system/files/DYCom%E8%82%A1%E7%A5%A8%E7%A4%BA%E4%BE%8B.rar

    非常感谢热情回复,,,你的工程文件下下来了,,,可以运行,,,但不知道怎么,Datagrid,chart都没有数据出来

    看了一下源代码,,,你的Datagird绑定都是有对应实体类,,,而我想绑定匿名类,,,

    问题还在啊,,,大家都没有我这个问题吗?


    不吝赐教
    2010年11月27日 14:59
  • 可以通过自己写Convert转换动态类。匿名类因为类型不能确定,目前好像还没有好的方法可以绑定!


    努力!完成了js解析器,还差一个svg插件,一个绘图程序,做好自己,呵呵~!
    • 已标记为答案 kyle.cj 2010年12月28日 13:26
    2010年12月2日 12:58
  • 可以通过自己写Convert转换动态类。匿名类因为类型不能确定,目前好像还没有好的方法可以绑定!


    努力!完成了js解析器,还差一个svg插件,一个绘图程序,做好自己,呵呵~!

    谢谢,了解。。。至少知道问题在哪,解决方向在哪
    不吝赐教
    2010年12月3日 13:39
  • 恩!加油吧!呵呵!
    努力!完成了js解析器,还差一个svg插件,一个绘图程序,做好自己,呵呵~!
    2010年12月4日 3:10
  • 原来是DataGridColumn.Bind.Convert

    看的我摸不着方向了。


    格子棋
    2011年2月24日 3:47