none
GridView scrollbar hinzufügen RRS feed

  • Frage

  • Guten Tag!

    Kann jemand mir ein Tipp geben wie ich endlich ein "Vertical Scrollbar" in einem Gridview hinzufüge? Denn ich benutze overflow:auto in einem Div, aber es dauert sehr viel damit die 450 Zeilen dargestellt werden. Aber, wenn ich den "paging" der GridView aktiviere, läuft alles ganz schnell. 

     <div class="container" runat="server" style="max-height:100px;padding-bottom:5px;overflow:auto">
                <asp:GridView ID="grdProdutosGestor" runat="server" CssClass="table table-hover"  AutoGenerateColumns="False" OnPageIndexChanged="grdProdutosGestor_PageIndexChanged" OnSelectedIndexChanged="grdProdutosGestor_SelectedIndexChanged" OnPageIndexChanging="grdProdutosGestor_PageIndexChanging" OnRowEditing="grdProdutosGestor_RowEditing" OnRowUpdated="grdProdutosGestor_RowUpdated" OnSelectedIndexChanging="grdProdutosGestor_SelectedIndexChanging" OnRowUpdating="grdProdutosGestor_RowUpdating" PageSize="5">
                    <Columns>
                        <asp:TemplateField HeaderText="Código Interno">
                            <ItemTemplate>
                                <asp:Label ID="lblCodidoInterno" runat="server" Text='<%#Bind("CodigoInterno") %>'></asp:Label>
                            </ItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="EAN">
                            <ItemTemplate>
                                <asp:Label ID="lblCodidoEAN" runat="server" Text='<%#Bind("CodigoEAN") %>'></asp:Label>
                            </ItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="Descrição">
                            <ItemTemplate>
                                <asp:Label ID="lblDescricao" runat="server" Text='<%#Bind("Descricao")%>'></asp:Label>
                            </ItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="Embalagem">
                            <ItemTemplate>
                                <asp:DropDownList ID="drpEmbalagemTemplate" Width="50" runat="server"></asp:DropDownList>
                                <%--<asp:Label ID="lblEmbalagem" runat="server" Text='<%#Bind("Embalagem") %>'></asp:Label>--%>
                            </ItemTemplate>
                            <EditItemTemplate>
                                <asp:DropDownList ID="drpEmbalagem" runat="server"></asp:DropDownList>
                            </EditItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="Pedido">
                            <ItemTemplate>
                                <asp:TextBox ID="txtPedido" runat="server"></asp:TextBox>
                            </ItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="Estoque">
                            <ItemTemplate>
                                <asp:TextBox ID="txtEstoque" runat="server"></asp:TextBox>
                            </ItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="Ações">
                            <ItemTemplate>
                                <asp:LinkButton ID="lnkAdicionar" runat="server" CssClass="btn btn-success" OnClick="lnkAdicionar_Click" CommandName="Update"><span aria-hidden="true" class="glyphicon glyphicon-plus"></span></asp:LinkButton>
                                <%--<asp:LinkButton ID="lnkEditar" runat="server" CssClass="btn btn-success" CommandName="Edit"><span aria-hidden="true" class="glyphicon glyphicon-edit"></span></asp:LinkButton>--%>
                            </ItemTemplate>
                        </asp:TemplateField>
                    </Columns>
                </asp:GridView>
            </div>

    Mit freundlichen  Grüssen aus Brasilien!!
    Paulo

    Dienstag, 6. Oktober 2015 14:55

Alle Antworten

  • Hallo Paulo,

    ich verstehe deine Frage nicht. Mit overflow-y: scroll erhältst Du eine vertikale Scollbar für den Container. Aber wenn Du das doch schon hast, was genau passt dann nicht?

    Dass eine Tabelle mit 450 Zeilen erheblich länger zum Laden benötigt als eine Tabelle mit bspw. 10 Zeilen, dürfte klar sein und das lässt sich auch nicht ändern.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Dienstag, 6. Oktober 2015 16:17
    Moderator
  • Hallo Stefan,

    Danke für Ihre Antwort!

    Die Abfrage läuft sehr schnell sowie die Zuweisung an List<T>, aber wenn den Container den "scrollbar" erstellt, es dauert...

    Vielen Dank!

    Dienstag, 6. Oktober 2015 20:28
  • Hallo Paulo,

    das hat dann u.a. damit zu tun, dass die Höhe der einzelnen Gridzeilen und damit die Gesamthöhe des Grids nicht festgelegt ist. Daher muss der Browser für jede Zeile die Höhe errechnen, was sich dann natürlich auch auf die Dauer bis zur vollständigen Anzeige auswirkt.

    Zudem hast Du viele Controls in der Tabelle (Listboxen, Textboxen, ...) Das dauert auch seine Zeit, die alle zu zeichnen.

    Wenn Du die Zeilenanzahl nicht reduzierst, wird sich das leider auch nicht wirklich ändern lassen.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Dienstag, 6. Oktober 2015 22:06
    Moderator