Fra DataSet til Datagrid
Hejsa. Det jeg roder med på sigt er at udnytte caching af et dataset. Mit dataset rummer 3 tabeller, disse er 'personer','virksomheder', og en relationstabel 'personer_virksomheder'.Som hej har forstået det så skal hver tabel hentes ud hver for sig og derefter skal der i koden oprettes relationer. Her er min kode:
<%@ Page Language="VB" Debug="true" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<script runat="server">
sub page_load()
Dim dst As DataSet
Dim con As SqlConnection
Dim dad As SqlDataAdapter
dst = new DataSet()
con = new SqlConnection("Server=localhost; UID=cdm; pwd=; Database=Birc_Intranet")
dad = new SqlDataAdapter("SELECT * FROM personer",con)
con.open()
dad.Fill(dst,"personer")
dad.SelectCommand = New sqlCommand("SELECT * FROM virksomheder",con)
dad.Fill(dst,"virksomheder")
dad.SelectCommand = New sqlCommand("SELECT * FROM personer_virksomheder",con)
dad.Fill(dst,"personer_virksomheder")
con.close()
dst.Relations.Add("personer_personer_virksomheder",dst.Tables("personer").Columns("id"),dst.Tables("personer_virksomheder").Columns("personer_id"))
dst.Relations.Add("personer_virksomheder_virksomheder",dst.Tables("virksomheder").Columns("id"),dst.Tables("personer_virksomheder").Columns("virksomheder_id"))
dgPersoner.DataSource = dst
dgPersoner.DataBind()
end sub
</script>
<form runat="server">
<asp:Datagrid
id="dgPersoner"
AutoGenerateColumns="False"
Cellpadding="4"
width="700"
borderStyle="Inset"
HeaderStyle-font-size="11px"
ItemStyle-font-size="11px"
ItemStyle-Font-Name="Verdana"
HeaderStyle-BackColor="lightYellow"
AlternatingItemStyle-font-size="11px"
AlternatingItemStyle-BackColor="AliceBlue"
runat="server"
>
<Columns>
<asp:TemplateColumn
HeaderText="Navn"
SortExpression="navn"
>
<itemTemplate>
<%# Container.DataItem("navn") %>
</itemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn
HeaderText="Virksomhed"
SortExpression="v_navn"
>
<itemTemplate>
<%# Container.DataItem("v_navn") %>
</itemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn
HeaderText="Email"
SortExpression="email"
>
<itemTemplate>
<a href="mailto:<%# Container.DataItem("email") %>"><%# Container.DataItem("email") %></a>
</itemTemplate>
</asp:TemplateColumn>
<asp:BoundColumn
DataField="telefon"
HeaderText="Telefon"
/>
<asp:BoundColumn
DataField="Birc_telefon"
HeaderText="Birc lokal tlfnr."
/>
</Columns>
</asp:datagrid>
</form>
Problemet er at <%# Container.DataItem("v_navn") %> ikke bliver godkendt og jeg før følgende fejl:
Exception Details: System.ArgumentException: v_navn is neither a DataColumn nor a DataRelation for table personer.
Skal dette gribes helt anderledes an eller hvordan kommer jeg videre ??
