Έχω λοιπόν ένα generic user control που περιέχει ένα data list στο οποίο θέλω να δείξω ένα τυχόν DataTable χτίζοντας τις κολώνες στο runtime με ένα συγκεκριμένο τρόπο (ο οποίος έχει προδιαγραφές για το πώς θα είναι το Item, το EditItem, το Header και το Footer). To DataList είναι κάπως έτσι:
<asp:DataList id="allData" runat="server" Width="100%" GridLines="None" ShowHeader="True"
BorderStyle="None" BorderWidth="0px" CellPadding="2" ShowFooter="True" ExtractTemplateRows="True">
... (item styles μόνο)
</asp:DataList>
Και στην OnLoad του user control, καλείται κώδικας που κάνει το παρακάτω:
a_List.ExtractTemplateRows = true;
string strTemplateName = "~/Templates/" + a_Data.TableName + "Item.ascx";
CreateTemplate(a_Data, strTemplateName, TemplateType.Item);
a_List.ItemTemplate = Page.LoadTemplate(strTemplateName);
Η CreateTemplate γεννά με βάση τις στήλες του a_Data (DataTable) ένα user control σαν κι αυτό:
<%@ Language="c#" %>
<asp:Table runat="server">
<asp:TableRow>
<asp:TableCell><%# DataBinder.Eval(((DataListItem)Container).DataItem, "ID") %></asp:TableCell>
<asp:TableCell><%# DataBinder.Eval(((DataListItem)Container).DataItem, "Description") %></asp:TableCell>
</asp:TableRow>
</asp:Table>
και τα αντίστοιχα για τα άλλα templates, τα οποία επίσης ανατίθενται στο DataList.
Πάνω στο rendering του control όμως παίρνω το exception που ανέφερα.
Όσο και να έψαξα, βρήκα μόνο μια ερώτηση από έναν άλλο ταλαίπωρο που ρώταγε το ίδιο πράγμα και κανείς δεν του είχε απαντήσει. Ελπίζω ότι θα είμαι πιο τυχερή...
Νατάσα Μανουσοπούλου