получить значение XML-файла в сетке с привязкой к базе данных

Привет У меня есть база данных со столбцом (кодом курса), взятым из основного файла xmlfile. Помимо кода курса, в базе данных хранятся некоторые другие данные, такие как дата начала, дата окончания и т. Д. Мне нужно регулярно обновлять эти данные, поэтому я использую gridview, привязанный к базе данных. Проблема в том, что название курса есть только в xml файле. Есть ли способ связать базу данных и файл xml (как это делается с таблицами в реляционных базах данных), чтобы отобразить эти данные в gridview. Я попробовал, но получившаяся страница очень-очень медленная, поэтому я предполагаю, что это невозможно сделать таким образом. можно ли это сделать?

classes.aspx

 <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
    ConnectionString="<%$ myconn %>" 
    SelectCommand="SELECT CourseCode, Data1, Data2, CourseType FROM Courses ORDER BY CourseCode"> 
     </asp:SqlDataSource>

      <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
    DataKeyNames="CourseCode" DataSourceID="SqlDataSource1">
    <Columns>
         <asp:TemplateField HeaderText="CourseCode" SortExpression="CourseCode">

            <ItemTemplate>
                <asp:Label ID="Label4" runat="server" Text='<%# Bind("CourseCode") %>'></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>

            <asp:TemplateField HeaderText="Name">
         <ItemTemplate>
         <asp:Label id="lblDate" runat="server"></asp:Label>
         </ItemTemplate>
         </asp:TemplateField>

         restofgridviewhere

        </Columns>
       </asp:GridView>

course.aspx.vb

       Protected Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowDataBound
    For i As Integer = 0 To GridView1.Rows.Count - 1
        'create new label with the contents of lblDate 
        Dim labelDate As Label = DirectCast(GridView1.Rows(i).FindControl("lblDate"), Label)
        Dim Label4 As Label = DirectCast(GridView1.Rows(i).FindControl("Label4"), Label)

       For i As Integer = 0 To GridView1.Rows.Count - 1
       Dim labelDate As Label = DirectCast(GridView1.Rows(i).FindControl("lblDate"), Label)
        Dim Label4 As Label = DirectCast(GridView1.Rows(i).FindControl("Label4"), Label)

        Dim ds As New DataSet()
        ds.ReadXml("file.xml")
        Dim xmlDoc As New XmlDataDocument(ds)

        Dim nodeList As XmlNodeList = xmlDoc.DocumentElement.SelectNodes("courses/course[code = '" & Label4.Text & "']")

        Dim myRow As DataRow
        For Each myNode As XmlNode In nodeList
            myRow = xmlDoc.GetRowFromElement(DirectCast(myNode, XmlElement))
            If myRow IsNot Nothing Then
                labelDate.Text = myRow("name")
            End If
        Next
       Next
      End Sub

file.xml

 <courses>
   <course>
      <name>Course name</name> 
      <code>Course code</code> 
   </course>
   <courses>
9
задан netNewbi3 5 May 2011 в 10:13
поделиться