嗨,我有一个数据库,其中包含一个从主xmlfile中获取的列(课程代码).除了课程代码,数据库还保存了一些其他数据,如开始日期,结束日期等.我需要定期更新这些数据,因此我使用绑定到数据库的gridview.问题是课程名称仅在xml文件中.有没有办法可以链接数据库和xml文件(就像在关系数据库中的表一样)来在gridview中呈现这些数据.我有一个去,但结果页面非常慢,所以我认为它不能这样做.可以这样做吗?
courses.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>
Run Code Online (Sandbox Code Playgroud)
courses.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
Run Code Online (Sandbox Code Playgroud)
file.xml
<courses>
<course>
<name>Course name</name>
<code>Course code</code>
</course>
<courses>
Run Code Online (Sandbox Code Playgroud)
使用两个数据表,一个用于 sql 源,另一个用于 sql 源,在连接字符串中设置多个活动结果集 (MARS) 属性 true。将网格视图列与相应的数据表单元格绑定
希望这会起作用