Avatar billede TV47 Seniormester
30. juli 2019 - 18:11 Der er 5 kommentarer og
1 løsning

Får fejl med GridView1.RenderControl

Hej.

Har problemer med noget kode til udskrivning.

Får følgende fejlbesked:
System.Web.HttpException: 'Objektet 'GridView1' af typen 'GridView' skal placeres i en formularkode med runat=server.'

Kode:
protected void PrintAllPages(object sender, EventArgs e)
        {
            GridView1.AllowPaging = false;

            GridView1.DataBind();

            StringWriter sw = new StringWriter();

            HtmlTextWriter hw = new HtmlTextWriter(sw);
                     
            GridView1.RenderControl(hw);

            string gridHTML = sw.ToString().Replace("\"", "'")

                .Replace(System.Environment.NewLine, "");

            StringBuilder sb = new StringBuilder();

            sb.Append("<script type = 'text/javascript'>");

            sb.Append("window.onload = new function(){");

            sb.Append("var printWin = window.open('', '', 'left=0");

            sb.Append(",top=0,width=1000,height=600,status=0');");

            sb.Append("printWin.document.write(\"");

            sb.Append(gridHTML);

            sb.Append("\");");

            sb.Append("printWin.document.close();");

            sb.Append("printWin.focus();");

            sb.Append("printWin.print();");

            sb.Append("printWin.close();};");

            sb.Append("</script>");

            ClientScript.RegisterStartupScript(this.GetType(), "GridPrint", sb.ToString());

            GridView1.AllowPaging = true;

            GridView1.DataBind();
        }
Avatar billede arne_v Ekspert
31. juli 2019 - 01:37 #1
Hvordan ser din .aspx fil ud?
Avatar billede TV47 Seniormester
31. juli 2019 - 11:40 #2
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Kladdeliste.aspx.cs" Inherits="WebApplication2.WebForm1" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">

        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" ShowFooter="True" DataKeyNames="Linie" ShowHeaderWhenEmpty="True"
                       
            OnRowCommand="GridView1_RowCommand"

            BackColor="White" BorderColor="#CCCCCC" BorderStyle="None" BorderWidth="1px" CellPadding="3">
                     
            <%-- Theme properties --%>   
            <FooterStyle BackColor="White" ForeColor="#000066" />
            <HeaderStyle BackColor="#006699" Font-Bold="True" ForeColor="White" />
            <PagerStyle BackColor="White" ForeColor="#000066" HorizontalAlign="Left" />
            <RowStyle ForeColor="#000066" />
            <SelectedRowStyle BackColor="#669999" Font-Bold="True" ForeColor="White" />
            <SortedAscendingCellStyle BackColor="#F1F1F1" />
            <SortedAscendingHeaderStyle BackColor="#007DBB" />
            <SortedDescendingCellStyle BackColor="#CAC9C9" />
            <SortedDescendingHeaderStyle BackColor="#00547E" />                             
        <Columns>
            <asp:Templatefield HeaderText="Nummer" ControlStyle-Width="100">                                       
                    <ItemTemplate>
                        <asp:Label Text='<%# Eval("Nummer") %>' runat="server"/>
                    </ItemTemplate>                                       
                    <EditItemTemplate>
                        <asp:TextBox ID="txtNummer" Text= '<%# Eval("Nummer") %>' runat="server" />                           
                    </EditItemTemplate>
                    <FooterTemplate>
                        <asp:TextBox ID="txtNummerFooter" ControlStyle-Width="100" runat="server" />
                    </FooterTemplate>                 
            </asp:Templatefield>           
            <asp:Templatefield HeaderText="Dato" ControlStyle-Width="100" >
                    <ItemTemplate>
                        <asp:Label Text='<%# Eval("Dato") %>' runat="server"/>
                    </ItemTemplate>                   
                    <EditItemTemplate>
                        <asp:TextBox ID="txtDato" Text= '<%# Convert.ToDateTime(Eval("Dato")).ToString("yyyy/MM/dd") %>' runat="server" />   
                    </EditItemTemplate>
                    <FooterTemplate>
                        <asp:TextBox ID="txtDatoFooter" ControlStyle-Width="100" runat="server"/>
                    </FooterTemplate>                     
            </asp:Templatefield>       
            <asp:Templatefield>
                    <FooterTemplate>
                        <asp:ImageButton ImageUrl="/Images/Add.png" runat="server" CommandName="Tilføj" ToolTip="Tilføj" Width="20px" Height="20px" />                     
                    </FooterTemplate>
            </asp:Templatefield>                               
        </Columns>                         
        </asp:GridView>
        <p>
        <asp:Button ID="Button1" runat="server" OnClick="PrintAllPages" Text="Button" />
        </p>
    </form>
</body>
</html>
Avatar billede TV47 Seniormester
05. august 2019 - 16:59 #3
Blev du klogere på denne arne_v?
Avatar billede arne_v Ekspert
06. august 2019 - 01:03 #4
Nej - jeg blev faktisk mere forvirret.

'Objektet 'GridView1' af typen 'GridView' skal placeres i en formularkode med runat=server.'

og:

<form id="form1" runat="server">

        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" ShowFooter="True" DataKeyNames="Linie" ShowHeaderWhenEmpty="True"
                     
            OnRowCommand="GridView1_RowCommand"

            BackColor="White" BorderColor="#CCCCCC" BorderStyle="None" BorderWidth="1px" CellPadding="3">

matcher ikke - GridView1 er inden i en form med runat="server".
Avatar billede TV47 Seniormester
06. august 2019 - 16:29 #5
Hvis man indsætter denne i C# koden, så forsvinder fejlen:

public override void VerifyRenderingInServerForm(Control control)
{
}
Avatar billede arne_v Ekspert
07. august 2019 - 00:49 #6
Det var godt nok ikke specielt indlysende udfra fejlmeddelelsen.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester