Sperick
Sperick

Reputation: 2761

Control 'DataLoading1_gdvDataGroups_ctl01_ctl00' of type 'DataControlLinkButton' must be placed inside a form tag with runat=server

I'm trying to export the contents of an ASP.NET gridView control to an Excel spreadsheet. To do this I've been using the code on this page.

When it gets to the RederControl(hw) line though my code blows up. I get an error like:

GridView must be placed inside a form tag with runat=“server” even after the GridView is within a form tag

To solve this I found this answer. However the main answer does not work and I think it is because my code is in an .ascx user control. With that in mind I tried the solutions in the second highest rated answer.

This time I get error relating to the DataControlLinkButtons similar to the title of this question.

My gridview contains hyperlinks inside in the cells of one column. I tried to remove them from their parent control prior to rendering with the following code (as per the second answer on that page)

List<int> gridIndexes=new List<int>();
for (int i = 1; i < gdvDataGroups.Controls[0].Controls.Count-1; i++)
{   
    gridIndexes.Add(gdvDataGroups.Controls.IndexOf(gdvDataGroups.Controls[0].Controls[i].Controls[8].Controls[1]));
    gdvDataGroups.Controls.Remove(gdvDataGroups.Controls[0].Controls[i].Controls[8].Controls[1]);
}

but it didn't work for me and I got the same error.

Any ideas of how to approach this?

The gridView is as follows (with only the relevant 9th column included):

 <asp:GridView ID="gdvDataFiles" SkinID="MediumSpace" runat="server" AutoGenerateColumns="False"
                        ShowHeader="true" Width="100%" OnPageIndexChanging="gdvDataFiles_PageIndexChanging"
                        AllowPaging="True" PageSize="20">
                        <Columns>                              
                            <asp:TemplateField HeaderText="Details" ItemStyle-Width="80px" ItemStyle-HorizontalAlign="Center">
                                <ItemTemplate>
                                    <asp:HyperLink ID="HyperLink1" runat="server" Text='<%# Eval("RequestPKID") == null ? "Not available" : "View" %>'
                                        NavigateUrl='<%# Eval("RequestPKID") == null ? "" : Eval("RequestPkid", "../Pages/BOLoadDetails.aspx?fileid={0}") %>'
                                        Style="padding-top: 4px; display: block" />
                                </ItemTemplate>
                            </asp:TemplateField>                                
                        </Columns>
                        <EmptyDataTemplate>
                            No data file loads found
                        </EmptyDataTemplate>
                    </asp:GridView>

Upvotes: 1

Views: 422

Answers (1)

Sperick
Sperick

Reputation: 2761

Ok turns out that I needed to disable the sorting on the grid prior to rendering the spreadsheet. I think it was the sort control buttons that were causing the problem.

Upvotes: 1

Related Questions