none
DataControlRowType.EmptyDataRow y DataControlRowType.DataRow RRS feed

  • Pregunta

  • Hola:

    ¿Es posible que en el evento rowdatabound de un gridview me haga el emptydatarow y datarow a la vez? ¿No son excluyentes?

    Mi gridview es

        <asp:GridView ID="gvpremios" SortedAscendingHeaderStyle-BackColor="Blue" SortedDescendingHeaderStyle-BackColor="BlueViolet" HeaderStyle-CssClass="titulo" EmptyDataRowStyle-CssClass="centro" EmptyDataRowStyle-ForeColor="red" EmptyDataText="No hay registros" AllowPaging="true" AllowSorting="true" width="100%" AutoGenerateColumns="false" DataKeyNames="id0" runat="server">
            <PagerTemplate>
                <span class="centrado"><asp:Button Text="Principio" CommandName="Page" CommandArgument="First" OnClientClick="if(document.getElementById('ctl00_cphcontenido_gvpremios_ctl01_ddlpaginas').options[document.getElementById('ctl00_cphcontenido_gvpremios_ctl01_ddlpaginas').selectedIndex].text==1)  {alert('Ya se está en el principio'); return false}" runat="server" />
                <asp:LinkButton CommandName="Page" CommandArgument="Prev" runat="server"><asp:Image ID="imgpaginaanterior" Tooltip="Página anterior" AlternateText="Página anterior" visible="false"  BorderWidth="0" ImageUrl="../Imagenes/flecha izquierda.gif" Width="16" Height="12" runat="server" /></asp:LinkButton>
                 <asp:DropDownList ID="ddlpaginas" AutoPostBack="true" OnSelectedIndexChanged="seleccionar_pagina" runat="server" />/
                <asp:Label ID="lblpaginas" runat="server" />
                <asp:LinkButton CommandName="Page" CommandArgument="Next" runat="server"><asp:Image ID="imgpaginasiguiente" Tooltip="Página siguiente" AlternateText="Página siguiente" visible="false" BorderWidth="0" ImageUrl="../Imagenes/flecha derecha.gif" Width="16" Height="12" runat="server" /></asp:LinkButton>
                <asp:Button Text="Fin" CommandName="Page" CommandArgument="Last" OnClientClick="if(document.getElementById('ctl00_cphcontenido_gvpremios_ctl01_ddlpaginas').options[document.getElementById('ctl00_cphcontenido_gvpremios_ctl01_ddlpaginas').selectedIndex].text==document.getElementById('ctl00_cphcontenido_gvpremios_ctl01_lblpaginas').innerHTML) {alert('Ya se está en el fin'); return false}" runat="server" /></span>
            </PagerTemplate>
            <EmptyDataTemplate>
                <asp:Panel ID="pnlanadir" runat="server">
                <tr>
                    <td><b><asp:label ForeColor="Red" Text="*" runat="server" /> Fecha</b>
                    <asp:DropDownList ID="ddldias" runat="server" />
                    <asp:Label Text="/" runat="server" />
                    <asp:DropDownList ID="ddlmeses" runat="server" />
                    <asp:Label Text="/" runat="server" />
                    <asp:DropDownList ID="ddlanos" runat="server" />
                    <asp:DropDownList ID="ddlhoras" runat="server" />
                    <asp:Label Text=":" runat="server" />
                    <asp:DropDownList ID="ddlminutos" runat="server" />
                    <asp:Label Text=":" runat="server" />
                    <asp:DropDownList ID="ddlsegundos" runat="server" />
                    <asp:CustomValidator ValidationGroup="premios" ControlToValidate="ddlanos" Display="Dynamic"  ForeColor="red" ErrorMessage="Fecha inválida" OnServerValidate="existe_fecha_valida" runat="server" /> 
                    <asp:CustomValidator  ValidationGroup="premios" ControlToValidate="fufichero" Display="Dynamic"  ForeColor="red" ErrorMessage="Foto inválida" OnServerValidate="existe_fichero_correcto" runat="server" /> 
                    <asp:CustomValidator ValidationGroup="premios" ControlToValidate="txttitulo" Display="Dynamic"  ForeColor="red" ErrorMessage="Clave duplicada" OnServerValidate="existe_campos_duplicados" runat="server" /> 
                    <asp:LinkButton ID="lnkanadir" ValidationGroup="premios" Text="Añadir" OnCommand="anadir" runat="server" />
                    </td>
                    <td><b><asp:label ForeColor="Red" Text="*" runat="server" /> Título</b> <asp:TextBox ID="txttitulo" MaxLength="200" runat="server" />
                    <asp:RequiredFieldValidator ForeColor="red" ValidationGroup="premios" ControlToValidate="txttitulo" ErrorMessage="Título obligatorio" Display="None" runat="server" />
                    <asp:RegularExpressionValidator ForeColor="red" ValidationGroup="premios" ControlToValidate="txttitulo" ErrorMessage="Título inválido" Display="None" ValidationExpression="[^'<>]*" runat="server" />
                    </td>
                    <td><b><asp:label ForeColor="Red" Text="*" runat="server" /> Foto</b> <asp:FileUpload ID="fufichero" runat="server" />
                    <asp:RequiredFieldValidator ForeColor="red" ValidationGroup="premios" ControlToValidate="fufichero" ErrorMessage="Foto obligatoria" Display="None" runat="server" />
                    <asp:RegularExpressionValidator ForeColor="red" ValidationGroup="premios" ControlToValidate="fufichero" ErrorMessage="Foto inválida" Display="None" ValidationExpression="[^'<>]*" runat="server" />
                    </td>
                    <td><b><asp:label ForeColor="Red" Text="*" runat="server" /> Enlace</b> <asp:TextBox ID="txtenlace" MaxLength="200" runat="server" />
                    <asp:RequiredFieldValidator ForeColor="red" ValidationGroup="premios" ControlToValidate="txtenlace" ErrorMessage="Enlace obligatorio" Display="None" runat="server" />
                    <asp:RegularExpressionValidator ForeColor="red" ValidationGroup="premios" ControlToValidate="txtenlace" ErrorMessage="Enlace inválido" Display="None" ValidationExpression="((mailto\:|(news|(ht|f)tp(s?))\://){1}\S+)" runat="server" />
                    </td>
                    <td><b><asp:label ForeColor="Red" Text="*" runat="server" /> Comentario</b>  <asp:TextBox ID="txtcomentario" MaxLength="200" runat="server" />
                    <asp:RequiredFieldValidator ForeColor="red" ValidationGroup="premios" ControlToValidate="txtcomentario" ErrorMessage="Comentario obligatorio" Display="None" runat="server" />
                    <asp:RegularExpressionValidator ForeColor="red" ValidationGroup="premios" ControlToValidate="txtcomentario" ErrorMessage="Comentario inválido" Display="None" ValidationExpression="[^'<>]*" runat="server" />
                    </td>
                </tr>
                </asp:Panel>
                <asp:Panel ID="pnlnohayregistros" Visible="false" runat="server">
                <tr>
                    <td colspan="5" class="centro">
                        <span style="color:red"> No hay registros</span>
                    </td>
                </tr>
                </asp:Panel>
            </EmptyDataTemplate>
            <PagerSettings Position="TopAndBottom" />
            <Columns>
                <asp:CommandField HeaderText="Edición" ValidationGroup="premios" ShowEditButton="true" EditText="Editar" ShowCancelButton="true" CancelText="Cancelar" ShowDeleteButton="true" DeleteText="Borrar" />
                <asp:TemplateField HeaderText="Fecha" ItemStyle-CssClass="centro" SortExpression="fecha">
                    <ItemTemplate>
                        <asp:label text='<%#IIf(InStr(Eval("foto"), "Sobra") > 0 OrElse InStr(Eval("foto"), "Falta") > 0, "<span style=""color:red"">" & Eval("fecha") & "</span>", Eval("fecha"))%>' runat="server" />
                    </ItemTemplate>
                    <FooterTemplate>
                        <b><asp:label ForeColor="Red" Text="*" runat="server" /></b>
                        <asp:DropDownList ID="ddldias" runat="server" />
                        <asp:Label Text="/" runat="server" />
                        <asp:DropDownList ID="ddlmeses" runat="server" />
                        <asp:Label Text="/" runat="server" />
                        <asp:DropDownList ID="ddlanos" runat="server" />
                        <asp:DropDownList ID="ddlhoras" runat="server" />
                        <asp:Label Text=":" runat="server" />
                        <asp:DropDownList ID="ddlminutos" runat="server" />
                        <asp:Label Text=":" runat="server" />
                        <asp:DropDownList ID="ddlsegundos" runat="server" />
                        <asp:CustomValidator ValidationGroup="premios" ControlToValidate="ddlanos" Display="Dynamic"  ForeColor="red" ErrorMessage="Fecha inválida" OnServerValidate="existe_fecha_valida" runat="server" /> 
                        <asp:CustomValidator ValidationGroup="premios" ControlToValidate="fufichero" Display="Dynamic"  ForeColor="red" ErrorMessage="Foto inválida" OnServerValidate="existe_fichero_correcto" runat="server" /> 
                        <asp:CustomValidator ValidationGroup="premios" ControlToValidate="txttitulo" Display="Dynamic"  ForeColor="red" ErrorMessage="Clave duplicada" OnServerValidate="existe_campos_duplicados" runat="server" /> 
                        <asp:LinkButton ValidationGroup="premios" Text="Añadir" OnCommand="anadir" runat="server" />
                        <asp:LinkButton Text="Cancelar" OnCommand="cancelar" runat="server" />
                    </FooterTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Título" SortExpression="titulo">
                    <ItemTemplate>
                        <asp:label text='<%#IIf(InStr(Eval("foto"), "Sobra") > 0 OrElse InStr(Eval("foto"), "Falta") > 0, "<span style=""color:red"">" & Eval("titulo") & "</span>", Eval("titulo"))%>' runat="server" />
                    </ItemTemplate>
                    <FooterTemplate>
                        <b><asp:label ForeColor="Red" Text="*" runat="server" /></b> <asp:TextBox ID="txttitulo" MaxLength="25" runat="server" />
                        <asp:RequiredFieldValidator ForeColor="red" ValidationGroup="premios" ControlToValidate="txttitulo" ErrorMessage="Título obligatorio" Display="None" runat="server" />
                        <asp:RegularExpressionValidator ForeColor="red" ValidationGroup="premios" ControlToValidate="txttitulo" ErrorMessage="Título inválido" Display="None" ValidationExpression="[^'<>]*" runat="server" />
                    </FooterTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Foto" SortExpression="foto">
                    <EditItemTemplate>
                        <b><asp:label ForeColor="Red" Text="*" runat="server" /></b> <asp:FileUpload ID="fufichero" runat="server" />
                        <asp:RequiredFieldValidator ForeColor="red" ValidationGroup="premios" ControlToValidate="fufichero" ErrorMessage="Foto obligatoria" Display="None" runat="server" />
                        <asp:RegularExpressionValidator ForeColor="red" ValidationGroup="premios" ControlToValidate="fufichero" ErrorMessage="Foto inválida" Display="None" ValidationExpression="[^'<>]*" runat="server" />
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:label ID="lblfichero" text='<%#IIf(InStr(Eval("foto"), "Sobra") > 0 OrElse InStr(Eval("foto"), "Falta") > 0, "<span style=""color:red"">" & Eval("foto") & "</span>", Eval("foto"))%>' runat="server" />
                    </ItemTemplate>
                    <FooterTemplate>
                        <b><asp:label ForeColor="Red" Text="*" runat="server" /></b> <asp:FileUpload ID="fufichero" runat="server" />
                        <asp:RequiredFieldValidator ForeColor="red" ValidationGroup="premios" ControlToValidate="fufichero" ErrorMessage="Foto obligatoria" Display="None" runat="server" />
                        <asp:RegularExpressionValidator ForeColor="red" ValidationGroup="premios" ControlToValidate="fufichero" ErrorMessage="Foto inválida" Display="None" ValidationExpression="[^'<>]*" runat="server" />
                    </FooterTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Tamaño" SortExpression="tamano">
                    <ItemTemplate>
                        <asp:Label Text='<%#IIf(InStr(Eval("foto"), "Sobra") > 0 OrElse InStr(Eval("foto"), "Falta") > 0, "<span style=""color:red"">" & Eval("tamano") & "</span>", Eval("tamano"))%>' runat="server" />
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Enlace" SortExpression="enlace">
                    <ItemTemplate>
                        <asp:label text='<%#IIf(InStr(Eval("foto"), "Sobra") > 0 OrElse InStr(Eval("foto"), "Falta") > 0, "<span style=""color:red"">" & Eval("enlace") & "</span>", Eval("enlace"))%>' runat="server" />
                    </ItemTemplate>
                    <FooterTemplate>
                        <b><asp:label ForeColor="Red" Text="*" runat="server" /></b> <asp:TextBox ID="txtenlace" MaxLength="80" runat="server" />
                        <asp:RequiredFieldValidator ForeColor="red" ValidationGroup="premios" ControlToValidate="txtenlace" ErrorMessage="Enlace obligatorio" Display="None" runat="server" />
                        <asp:RegularExpressionValidator ForeColor="red" ValidationGroup="premios" ControlToValidate="txtenlace" ErrorMessage="Enlace inválido" Display="None" ValidationExpression="((mailto\:|(news|(ht|f)tp(s?))\://){1}\S+)" runat="server" />
                    </FooterTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Comentario" SortExpression="comentario">
                    <ItemTemplate>
                        <asp:label text='<%#IIf(InStr(Eval("foto"), "Sobra") > 0 OrElse InStr(Eval("foto"), "Falta") > 0, "<span style=""color:red"">" & Eval("comentario") & "</span>", Eval("comentario"))%>' runat="server" />
                    </ItemTemplate>
                    <FooterTemplate>
                        <b><asp:label ForeColor="Red" Text="*" runat="server" /></b> <asp:TextBox ID="txtcomentario" MaxLength="200" runat="server" />
                        <asp:RequiredFieldValidator ForeColor="red" ValidationGroup="premios" ControlToValidate="txtcomentario" ErrorMessage="Comentario obligatorio" Display="None" runat="server" />
                        <asp:RegularExpressionValidator ForeColor="red" ValidationGroup="premios" ControlToValidate="txtcomentario" ErrorMessage="Comentario inválido" Display="None" ValidationExpression="[^'<>]*" runat="server" />
                    </FooterTemplate>
                </asp:TemplateField>
            </Columns>
       </asp:GridView>
    

    El código es muy largo, pero si hace falta lo pongo.

    Gracias por cualquier ayuda.

    miércoles, 12 de agosto de 2015 19:36

Respuestas

  • hola

    >>¿Es posible que en el evento rowdatabound de un gridview me haga el emptydatarow y datarow a la vez?

    si no hay items que mostrar porque el origen de datos no asigna nada, entonces se aplicara el EmptyDataTemplate

    pero el evento RowDataBound no deberia ejecutarse

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 12 de agosto de 2015 19:55