Saturday, March 24, 2012

Strange error message

I'm getting the following error from a standard datagrid on an .aspx page, can anyone tell me what causes this?

System.Web.UI.WebControls.DataGridColumnCollection must have items of type 'System.Web.UI.WebControls.DataGridColumn'. 'table' is of type 'System.Web.UI.HtmlControls.HtmlTable'.Can you show how you have declared the DataGrid?
You are propably trying to add a HTML-Table to the Columns-collection of your DataGrid.

If you posted the code where this error occurs we will surely be able to help you out. You can usually find the line-number in the code-behind file from where the error originated. That is if you have compiled in Debug-mode.
I've not included the columns as there's a lot of code, let me know if you need them.


<ASP:DataGrid id="MyDataGrid" runat="server"
Width="500" BorderColor="black"
ShowFooter="false" CellPadding=3 CellSpacing="0"
HeaderStyle-CssClass="scroller" HeaderStyle-BackColor="#000033"
ItemStyle-CssClass="columnText" EditItemStyle-CssClass="columnText"
OnEditCommand="MyDataGrid_Edit" OnCancelCommand="MyDataGrid_Cancel"
OnUpdateCommand="MyDataGrid_Update" OnDeleteCommand="MyDataGrid_Delete"
DataKeyField="SupplierID" AutoGenerateColumns="false"
AllowPaging="true" PageSize="10" OnPageIndexChanged="MyDataGrid_Page"
PagerStyle-Mode="NumericPages" PagerStyle-HorizontalAlign="Right"
PagerStyle-Visible="true" >

Put it all, columns are crucial here.
Here is the full code:


<table width="600" border="0" align="center" cellpadding="0" cellspacing="0">
//The line above is the one causing the error
<tr>
<td>
<form id="form1" runat="server">
<table width="590" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td>
<ASP:DataGrid id="MyDataGrid" runat="server"
Width="500" BorderColor="black"
ShowFooter="false" CellPadding=3 CellSpacing="0"
HeaderStyle-CssClass="scroller" HeaderStyle-BackColor="#000033"
ItemStyle-CssClass="columnText" EditItemStyle-CssClass="columnText"
OnEditCommand="MyDataGrid_Edit" OnCancelCommand="MyDataGrid_Cancel"
OnUpdateCommand="MyDataGrid_Update" OnDeleteCommand="MyDataGrid_Delete"
DataKeyField="SupplierID" AutoGenerateColumns="false"
AllowPaging="true" PageSize="10" OnPageIndexChanged="MyDataGrid_Page"
PagerStyle-Mode="NumericPages" PagerStyle-HorizontalAlign="Right"
PagerStyle-Visible="true" >
<Columns>
<asp:EditCommandColumn HeaderText="Edit" EditText="Edit" CancelText="Cancel" UpdateText="Update" ItemStyle-Wrap="false"/>
<asp:BoundColumn HeaderText="ID" SortExpression="SupplierID" ReadOnly="True" DataField="SupplierID" ItemStyle-Wrap="false"/
<asp:TemplateColumn HeaderText="Suppliers" SortExpression="txt_Supplier">
<ItemTemplate>
<asp:Label runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "txt_Supplier") %>'/>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox runat="server" id="add_txt_Supplier" Width="150" Text='<%# DataBinder.Eval(Container.DataItem, "txt_Supplier") %>' CssClass="columnText" />
</EditItemTemplate>
</asp:TemplateColumn
<asp:TemplateColumn HeaderText="Contact" SortExpression="txt_Contact">
<ItemTemplate>
<asp:Label runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "txt_Contact") %>'/>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox runat="server" id="add_txt_Contact" Width="100" Text='<%# DataBinder.Eval(Container.DataItem, "txt_Contact") %>' CssClass="columnText" />
</EditItemTemplate>
</asp:TemplateColumn
<asp:TemplateColumn HeaderText="Address1" SortExpression="txt_Address1">
<ItemTemplate>
<asp:Label runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "txt_Address1") %>'/>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox runat="server" id="add_txt_Address1" Width="150" Text='<%# DataBinder.Eval(Container.DataItem, "txt_Address1") %>' CssClass="columnText" />
</EditItemTemplate>
</asp:TemplateColumn
<asp:TemplateColumn HeaderText="Address2" SortExpression="txt_Address2">
<ItemTemplate>
<asp:Label runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "txt_Address2") %>'/>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox runat="server" id="add_txt_Address2" Width="150" Text='<%# DataBinder.Eval(Container.DataItem, "txt_Address2") %>' CssClass="columnText" />
</EditItemTemplate>
</asp:TemplateColumn
<asp:TemplateColumn HeaderText="Town" SortExpression="txt_Town">
<ItemTemplate>
<asp:Label runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "txt_Town") %>'/>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox runat="server" id="add_txt_Town" Width="100" Text='<%# DataBinder.Eval(Container.DataItem, "txt_Town") %>' CssClass="columnText" />
</EditItemTemplate>
</asp:TemplateColumn
<asp:TemplateColumn HeaderText="City" SortExpression="txt_City">
<ItemTemplate>
<asp:Label runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "txt_City") %>'/>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox runat="server" id="add_txt_City" Width="100" Text='<%# DataBinder.Eval(Container.DataItem, "txt_City") %>' CssClass="columnText" />
</EditItemTemplate>
</asp:TemplateColumn
<asp:TemplateColumn HeaderText="Post Code" SortExpression="txt_PostCode">
<ItemTemplate>
<asp:Label runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "txt_PostCode") %>'/>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox runat="server" id="add_txt_PostCode" Width="50" Text='<%# DataBinder.Eval(Container.DataItem, "txt_PostCode") %>' CssClass="columnText" />
</EditItemTemplate>
</asp:TemplateColumn
<asp:TemplateColumn HeaderText="Phone" SortExpression="txt_Phone">
<ItemTemplate>
<asp:Label runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "txt_Phone") %>'/>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox runat="server" id="add_txt_Phone" Width="50" Text='<%# DataBinder.Eval(Container.DataItem, "txt_Phone") %>' CssClass="columnText" />
</EditItemTemplate>
</asp:TemplateColumn
<asp:TemplateColumn HeaderText="Fax" SortExpression="txt_Fax">
<ItemTemplate>
<asp:Label runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "txt_Fax") %>'/>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox runat="server" id="add_txt_Fax" Width="50" Text='<%# DataBinder.Eval(Container.DataItem, "txt_Fax") %>' CssClass="columnText" />
</EditItemTemplate>
</asp:TemplateColumn
<asp:TemplateColumn HeaderText="Mobile" SortExpression="txt_Mobile">
<ItemTemplate>
<asp:Label runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "txt_Mobile") %>'/>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox runat="server" id="add_txt_Mobile" Width="50" Text='<%# DataBinder.Eval(Container.DataItem, "txt_Mobile") %>' CssClass="columnText" />
</EditItemTemplate>
</asp:TemplateColumn
<asp:TemplateColumn HeaderText="Email" SortExpression="txt_Email">
<ItemTemplate>
<asp:Label runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "txt_Email") %>'/>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox runat="server" id="add_txt_Email" Width="100" Text='<%# DataBinder.Eval(Container.DataItem, "txt_Email") %>' CssClass="columnText" />
</EditItemTemplate>
</asp:TemplateColumn
<asp:TemplateColumn HeaderText="Notes" SortExpression="txt_SupplierNotes">
<ItemTemplate>
<asp:Label runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "txt_SupplierNotes") %>'/>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox runat="server" id="add_txt_SupplierNotes" Width="250" Text='<%# DataBinder.Eval(Container.DataItem, "txt_SupplierNotes") %>'
CssClass="columnText" TextMode="MultiLine" Rows="6"/>
</EditItemTemplate>
</asp:TemplateColumn
</ASP:DataGrid>
</td>
</tr>
</table>
</form>
</td>
</tr>
</table>

Are you sure there isn't anything before that line that could cause it? More nested grids or tables?
Nothing that I can see. This is the only datagrid on the page and the other tables on the page are completely seperate from this one.

It's pretty weird as I've created a few other similar pages without any problems.

0 comments:

Post a Comment