2010-05-12 63 views
0

我想在silverlight数据网格中显示xml文件数据。即时通讯使用下面的代码,但它does not工作。请帮助。在silverlight datagrid中显示xml数据,vb.net

我的vb.net代码:

进口系统 进口System.Collections.Generic 进口System.Linq的 进口System.Windows 进口System.Windows.Controls 进口System.Xml.Linq的

命名空间SilverlightApplication1 公共部分分类页面 Inherits UserControl Public Sub New() InitializeComponent() End Sub

Private Sub Page_Loaded(ByVal sender As Object, ByVal e As RoutedEventArgs) 
     DataGrid1.ItemsSource = GetReport() 
    End Sub 

    Public Function GetStatusReport() As List(Of Table) 
     Dim statusReport As New List(Of Table)() 

     Dim doc As XElement = XElement.Load("Data/Report.xml") 

     report = (From row In doc.Elements() _ 
      Select GetStatus(row)).ToList() 

     Return statusReport 
    End Function 

    Private Function GetReport(ByVal row As XElement) As Table 
     Dim s As New Table() 
     s.JobID= row.Attribute("ID").Value 
     s.VenueName= row.Attribute("Name").Value) 
     Return s 
    End Function 
End Class 

末命名空间

回答

0

我所以这段代码...这可能是为什么它不工作混为一谈。

首先,当您设置ItemsSource时,可以调用不带参数的GetReport()。 GetStatusReport()从不被调用,即使它执行了XML提升。在GetStatusReport的内部,你返回statusReport,它是一个空的列表......并且你从来没有对报告做过任何事情,这是实际的查询。在查询内部,你调用GetStatus,虽然我相信它应该是GetReport,但它没有被定义。

Arghhh ......与所有的,我猜想,你要重新编写所有的代码是这样的:

Private Sub Page_Loaded(ByVal sender As Object, ByVal e As RoutedEventArgs) 
     DataGrid1.ItemsSource = GetStatusReport() 
    End Sub 

    Public Function GetStatusReport() As List(Of Table) 
     Dim statusReport As New List(Of Table)() 

     Dim doc As XElement = XElement.Load("Data/Report.xml") 

     statusReport = (From row In doc.Elements() _ 
      Select GetReport(row)).ToList() 

     Return statusReport 
    End Function 

    Private Function GetReport(ByVal row As XElement) As Table 
     Dim s As New Table() 
     s.JobID= row.Attribute("ID").Value 
     s.VenueName= row.Attribute("Name").Value) 
     Return s 
    End Function 
End Class 

除了这些补丁,如果我不能告诉你是否正确...它失败的地方在哪里?