Frage

I Telerik Kontrollen vor kurzem gekauft. Ich erhalte Performance-Problem mit RadGrid.

  1. I umgesetzt Funkruf zum RadGrid mit 6000 Datensätzen. Und ich erstellt viewall Option auf rg402_ItemCreated zum radcombo. Wenn ich seine Aufnahme 20 Sekunden wählen viewall, um die Daten an das Netz zu binden und danach die Brower stecken bleibt (beide Firefox 3.6.4 und IE7) und den Fehler anzeigt (Anbei Image). Gibt es trotzdem, den viewall Option Code zu ändern schnell die Daten zu erhalten. oder ist es trotzdem, um die Leistung zu verbessern und die Zeit der Aufzeichnungen verringern Bindung.

Hier ist mein Code.

ASPX Code

style type="text/css"> 
    .rgPageFirst, .rgPagePrev, .rgPageNext, .rgPageLast 
    { 
        display: none !important; 
    } 
    div.RadGrid_Default .rgHeader, div.RadGrid_Default th.rgResizeCol 
    { 
        background-image: none; 
    } 
</style> 

<script type="text/javascript"> 
    function onRequestStart(sender, args) { 
        if (args.get_eventTarget().indexOf("ExportToExcelButton") >= 0 || 
                args.get_eventTarget().indexOf("ExportToWordButton") >= 0 || 
                args.get_eventTarget().indexOf("ExportToPdfButton") >= 0 || 
                args.get_eventTarget().indexOf("ExportToCsvButton") >= 0) { 

            args.set_enableAjax(false); 
        } 
    } 
</script> 

<div> 
    <tr> 
        <td colspan="2"> 
            <asp:Label runat="server" Font-Bold="true" Font-Size="14pt" ID="lblTskName"></asp:Label> 
        </td> 
    </tr> 
    <br /> 
</div> 
<div> 
    <telerik:RadScriptManager ID="RadScriptManager1" runat="server"> 
    </telerik:RadScriptManager> 
    <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server"> 
        <ClientEvents OnRequestStart="onRequestStart" /> 
        <AjaxSettings> 
            <telerik:AjaxSetting AjaxControlID="rg402"> 
                <UpdatedControls> 
                    <telerik:AjaxUpdatedControl ControlID="rg402" LoadingPanelID="RadAjaxLoadingPanel1" /> 
                </UpdatedControls> 
            </telerik:AjaxSetting> 
        </AjaxSettings> 
    </telerik:RadAjaxManager> 
    <telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel1" runat="server" Skin="Default"> 
    </telerik:RadAjaxLoadingPanel> 
    <telerik:RadGrid ID="rg402" runat="server" AutoGenerateColumns="false" Height="550px" 
        OnNeedDataSource="rg402_NeedDataSource" Width="120%" AllowPaging="True" AllowSorting="True" 
        AllowMultiRowSelection="True" EnableHeaderContextMenu="true" GridLines="None" 
        EnableHeaderContextFilterMenu="true" AllowMultiRowEdit="true" AllowFilteringByColumn="True" 
        OnPreRender="rg402_PreRender" OnItemCreated="rg402_ItemCreated" EnableViewState="false"> 
        <HeaderStyle HorizontalAlign="Center" BorderWidth="1px" Font-Bold="true" Font-Size="8pt" /> 
        <ExportSettings IgnorePaging="true" ExportOnlyData="true"> 
            <Pdf AllowModify="false" AllowPrinting="true" PageBottomMargin="" PageFooterMargin="" 
                PageHeaderMargin="" PageHeight="11in" PageLeftMargin="" PageRightMargin="" PageTopMargin="" 
                PageWidth="14in" /> 
        </ExportSettings> 
        <MasterTableView DataKeyNames="orderId" CommandItemDisplay="Top" EditMode="InPlace" 
            PageSize="30"> 
            <CommandItemSettings ShowExportToWordButton="true" ShowExportToExcelButton="true" 
                ShowExportToCsvButton="true" ShowExportToPdfButton="true" ShowAddNewRecordButton="false" /> 
            <Columns> 
                <telerik:GridClientSelectColumn UniqueName="ClientSelectColumn" HeaderStyle-Width="3%" 
                    ItemStyle-Width="3%"> 
                </telerik:GridClientSelectColumn> 
                <telerik:GridBoundColumn UniqueName="sId" HeaderText="sId" DataField="sId" Visible="false"> 
                </telerik:GridBoundColumn> 
                <telerik:GridBoundColumn UniqueName="orderId" HeaderText="orderId" DataField="orderId" 
                    Visible="false"> 
                </telerik:GridBoundColumn> 
                <telerik:GridBoundColumn UniqueName="Customer Name" HeaderText="Customer Name" DataField="Customer Name" 
                    ReadOnly="true"> 
                </telerik:GridBoundColumn> 
                <telerik:GridBoundColumn UniqueName="Market Name" HeaderText="Market Name" DataField="Market Name" 
                    ReadOnly="true"> 
                </telerik:GridBoundColumn> 
                <telerik:GridBoundColumn UniqueName="LOB" HeaderText="LOB" DataField="LOB" ReadOnly="true"> 
                </telerik:GridBoundColumn> 
                <telerik:GridBoundColumn UniqueName="Headend Name" HeaderText="Headend Name" DataField="Headend Name" 
                    ReadOnly="true"> 
                </telerik:GridBoundColumn> 
                <telerik:GridBoundColumn UniqueName="Project Name" HeaderText="Project Name" DataField="Project Name" 
                    ReadOnly="true"> 
                </telerik:GridBoundColumn> 
                <telerik:GridHyperLinkColumn UniqueName="Site Name" HeaderText="Site Name" DataTextField="Site Name"> 
                </telerik:GridHyperLinkColumn> 
                <telerik:GridBoundColumn UniqueName="Task Status" HeaderText="Task Status" DataField="Task Status" 
                    ReadOnly="true"> 
                </telerik:GridBoundColumn> 
                <telerik:GridBoundColumn UniqueName="Plant Test Date" HeaderText="Plant Test Date" 
                    DataField="Plant Test Date" ReadOnly="true"> 
                </telerik:GridBoundColumn> 
                <telerik:GridBoundColumn UniqueName="CORE CM Number" HeaderText="CORE CM Number" 
                    DataField="CORE CM Number" ReadOnly="true"> 
                </telerik:GridBoundColumn> 
                <telerik:GridBoundColumn UniqueName="Req SM Imp Date" HeaderText="Req SM Imp Date" 
                    DataField="Req SM Imp Date" ReadOnly="true"> 
                </telerik:GridBoundColumn> 
                <telerik:GridBoundColumn UniqueName="SM Ticket Number" HeaderText="SM Ticket Number" 
                    DataField="SM Ticket Number"> 
                </telerik:GridBoundColumn> 
                <telerik:GridBoundColumn UniqueName="Sch SM Imp Date" HeaderText="Sch SM Imp Date" 
                    DataField="Sch SM Imp Date"> 
                </telerik:GridBoundColumn> 
                <telerik:GridEditCommandColumn UniqueName="ECC402"> 
                </telerik:GridEditCommandColumn> 
            </Columns> 
        </MasterTableView> 
        <ClientSettings EnableRowHoverStyle="true" ReorderColumnsOnClient="false" AllowDragToGroup="false" 
            AllowColumnsReorder="True"> 
            <Scrolling AllowScroll="true" UseStaticHeaders="true" /> 
            <Selecting AllowRowSelect="True"></Selecting> 
            <Resizing AllowRowResize="true" AllowColumnResize="True" EnableRealTimeResize="True" 
                ResizeGridOnColumnResize="False"></Resizing> 
        </ClientSettings> 
        <PagerStyle Mode="NextPrevAndNumeric"></PagerStyle> 
    </telerik:RadGrid>

CS-Datei ...

protected void Page_Load(object sender, EventArgs e) 
{ 
    try 
    { 
        if (!IsPostBack) 
        { 
            Session["SearchRes"] = null; 
            if (Session["TaskName"] != null) 
                lblTskName.Text = Session["TaskName"].ToString(); 
            Session["FilColms"] = null; 
            Session["SortExp"] = null; 
            Session["FilExp"] = null; 
            Session["ViewAll"] = null; 
            BindGrid(); 
        } 
    } 
    catch (Exception ex) 
    { 
        throw ex; 
    } 
} 

private void BindGrid() 
{ 
    try 
    { 
        DataSet dsResult = new DataSet(); 

        clsSearch_BL clsObj = new clsSearch_BL(); 
        clsObj.TaskID = (string)Session["TaskID"]; 
        clsObj.CustName = (string)Session["CustName"]; 
        clsObj.MarketName = (string)Session["MarketName"]; 
        clsObj.HeadendName = (string)Session["HeadendName"]; 
        clsObj.SiteName = (string)Session["SiteName"]; 
        clsObj.TaskStatus = (string)Session["TaskStatus"]; 
        clsObj.OrdType = (string)Session["OrdType"]; 
        clsObj.OrdStatus = (string)Session["OrdStatus"]; 
        clsObj.ProName = (string)Session["ProName"]; 
        clsObj.LOC = (string)Session["LOC"]; 
        clsObj.QuoteID = (string)Session["QuoteID"]; 
        clsObj.CMNumber = (string)Session["CMNumber"]; 

        if (Session["SearchRes"] == null) 
        { 
            dsResult = clsObj.getSearchResults_BL(clsObj); 
            Session["SearchRes"] = dsResult; 
        } 
        else 
            dsResult = (DataSet)Session["SearchRes"]; 

        DataView dataView = dsResult.Tables[0].DefaultView; 
        rg402.DataSource = dsResult; 
        //rg402.DataBind(); 
    } 
    catch (Exception ex) 
    { 
        throw ex; 
    } 
} 

protected void rg402_NeedDataSource(object source, Telerik.Web.UI.GridNeedDataSourceEventArgs e) 
{ 
    BindGrid(); 
} 

protected void rg402_PreRender(object sender, EventArgs e) 
{ 
    rg402.MasterTableView.GetColumnSafe("RowIndicator").Display = false; 

} 

protected void rg402_ItemCreated(object sender, GridItemEventArgs e) 
{ 
    if (e.Item is GridPagerItem) 
    { 
        RadComboBox combo = (e.Item as GridPagerItem).FindControl("PageSizeComboBox") as RadComboBox; 

        // The number of items shown when all is selected  
        int allRowsCount = int.MaxValue; 

        // Remove duplicates  
        RadComboBoxItem duplicate = combo.Items.FindItemByValue(allRowsCount.ToString()); 
        if (duplicate != null) 
        { 
            duplicate.Remove(); 
        } 

        // Create a new item for showing all  
        RadComboBoxItem item = new RadComboBoxItem("All", allRowsCount.ToString()); 
        item.Attributes.Add("ownerTableViewId", e.Item.OwnerTableView.ClientID); 
        combo.Items.Add(item); 

        // Set the current pagesize as the selected value  
        combo.Items.FindItemByValue(rg402.PageSize.ToString()).Selected = true; 
    } 
War es hilfreich?

Lösung

Mein Team hat Performance-Tests auf RadGrid vs einig anderen hoch 3rd-Party-Kontrollen vorgestellten, und RadGrid war am schnellsten zu der Zeit ..., so dass Sie eine gute Wahl bei den Kontrollen gemacht.

Der Browser ist Ihre Einschränkung. Sie werden das gleiche Problem mit jeder Kontrolle. Es ist eine schlechte Praxis zu zeigen, mehr als eine brauchbare Menge an Daten auf dem Bildschirm auf einmal.

6000 Zeilen und 16 Spalten ..., die von HTML wahrscheinlich mehr als 9 Megs ist Ihr Browser für Datagrid durch nur zu analysieren hat.

Sie sie nicht eine ViewAll Option geben. Wenn sie durch die Daten schnell durchsuchen möchten, können Sie Suchfunktionen, dass der Filter die Ergebnisse hinzufügen.

Wenn sie wirklich alle auf einmal die Daten wollen, was ich tun ist, eine Verbindung nahe dem Netz zur Verfügung stellen, die sie alle das Gitter in den Daten als Excel-Datei herunterladen können.

Andere Tipps

Während ich mit @Ed B bestätigen, dass Sie eine Menge von Daten, die Sie im Netz präsentieren, denke ich ältere Browser Probleme der Verwaltung der Speicherbedarf haben, werden Sie präsentieren.

Es gibt eine neue Funktion in der RadGrid (ab Q2 2013) genannt Virtualisierung, dass Sie die Leistung Beule und geben kann ‚alle anzeigen‘ -Funktion, dass Sie auf das Bild.

Sie können Grid-Virtualisierung ermöglichen, indem folgenden Markup in Ihrer RadGrid / ClientSettings Markup:

 <Virtualization EnableVirtualization="true" InitiallyCachedItemsCount="2000"
                    ItemsPerView="100"/>

Sie können an der Online-Demo mehr über die Funktion erfahren: http://demos.telerik.com/aspnet-ajax /grid/examples/performance/virtualization/defaultcs.aspx

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top