asp.net页面加载速度很慢

时间:2015-03-16 14:56:06

标签: c# jquery asp.net sharepoint

我正在使用与SharePoint的连接来加载列表项的应用程序。

我还使用动态表,因此用户可以添加新行。

我的页面是asp.net页面需要7秒多。我用萤火虫检查了这个。

以下是我的网页代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Client;

namespace AdminCareWeb
{
public partial class DocumentToevoegen : System.Web.UI.Page
{
    #region globalevars
    SharePointContextToken contextToken;
    string accessToken;
    Uri sharepointUrl;
    string contextTokenString;
    string logoHoofding;
    int initNumRows = 15;
    public string jsSharePointURL;

    //Instanties aanmaken van de klasses
    static List<TableRow> TableRows = new List<TableRow>();
    static Dictionary<int, Artikels> dicArtikels = new Dictionary<int, Artikels>();

    Document huidigDocument = new Document();
    Klanten huidigeKlant = new Klanten();
    #endregion


    #region properties
    private int numOfRows
    {
        get
        {
            if (ViewState["RowsCount"] == null)
            {
                return 0;
            }
            else
            {
                return (int)ViewState["RowsCount"];
            }
        }
        set
        {
            ViewState["RowsCount"] = value;
        }
    }
    #endregion

    protected void Page_Load(object sender, EventArgs e)
    {
        try
        {
            string vorigePagina = Request.UrlReferrer.ToString();

            //Controleer of de pagina gerefreshd werd of voor het eerst geladen wordt.
            if (!vorigePagina.Contains("DocumentToevoegen.aspx"))
            {
                TableRows.Clear();
                //Als de pagina voor de eerste keer geladen wordt moet de tabel leeggemaakt worden.
                dicArtikels.Clear();
            }

            //Generate the Rows on Initial Load
            if (!Page.IsPostBack && dicArtikels.Count == 0)
            {
                numOfRows = initNumRows;
                Artikels artikel = new Artikels();

                for (int i = 0; i < numOfRows; i++)
                {
                    dicArtikels.Add(i, artikel);

                }
            }

            GenerateTable(0, numOfRows);

            //Controleer of security tokens al aanwezig zijn. Indien deze niet aanwezig zijn maak ze globaal aan.
            if (PassThrough.contextTokenString != null)
            {
                ClientContext clientContext = ContextTokensOphalen();
                jsSharePointURL = PassThrough.sharepointUrl.ToString();



            }
            else if (!IsPostBack)
            {
                Response.Write("Could not find a context token.");
                return;
            }

        }
        catch (Exception ex)
        {
            huidigDocument.log("DocumentToevoegen.aspx", "Page_Load", ex.Message.ToString());
        }
    }

    protected void Page_LoadComplete(object sender, EventArgs e)
    {
        ClientContext clientContext = ContextTokensOphalen();

        try
        {
            bool foutief = false; ;
            string adresgegevens = "";

            #region parameters ophalen
            Parameters ledig = new Parameters();
            ledig.ledigParameters();
            huidigDocument.ParametersLookup(clientContext);
            huidigDocument.Parameters1Tekstregel(clientContext);
            huidigDocument.ParametersMeerdereTekstregels(clientContext);
            huidigDocument.ParametersJaNeen(clientContext);

            //Controleer of de bankgegevens ingevuld werden.

            if (Parameters.Bankgegevens != null && !string.IsNullOrEmpty(Parameters.Bankgegevens))
            {
                foutief = false;
                lblBankgegevens.Text = Parameters.Bankgegevens.Replace("\r\n", "<br />");
            }

            if (Parameters.Naam != null && !string.IsNullOrEmpty(Parameters.Naam))
            {
                foutief = false;
                adresgegevens += Parameters.Naam + "<br>";
            }

            if (Parameters.Adres != null && !string.IsNullOrEmpty(Parameters.Adres))
            {
                foutief = false;
                adresgegevens += Parameters.Adres + "<br>";
            }

            if (Parameters.Adres2 != null && !string.IsNullOrEmpty(Parameters.Adres2))
            {
                foutief = false;
                adresgegevens += Parameters.Adres2 + "<br>";
            }

            if (Parameters.Postcode != null && !string.IsNullOrEmpty(Parameters.Postcode))
            {
                foutief = false;
                adresgegevens += Parameters.Postcode;
            }

            if (Parameters.Plaats != null && !string.IsNullOrEmpty(Parameters.Plaats))
            {
                foutief = false;
                adresgegevens += " " + Parameters.Plaats + "<br>";
            }

            if (Parameters.Telefoon != null && Parameters.Telefoon.Length > 3)
            {
                foutief = false;
                adresgegevens += "Tel: " + Parameters.Telefoon + "<br>";
            }

            if (Parameters.GSM != null && Parameters.GSM.Length > 3)
            {
                foutief = false;
                adresgegevens += "GSM: " + Parameters.GSM + "<br>";
            }

            if (Parameters.Fax != null && Parameters.Fax.Length > 3)
            {
                foutief = false;
                adresgegevens += "Fax: " + Parameters.Fax + "<br>";
            }

            if (Parameters.Ondernemingsnummer != null && Parameters.Ondernemingsnummer.Length > 3)
            {
                foutief = false;
                adresgegevens += "BTW " + Parameters.Ondernemingsnummer + "<br>";
            }

            if (Parameters.RPR != null && !string.IsNullOrEmpty(Parameters.RPR))
            {
                foutief = false;
                adresgegevens += "RPR " + Parameters.RPR + "<br>";
            }

            if (Parameters.Website != null && !string.IsNullOrEmpty(Parameters.Website))
            {
                foutief = false;
                adresgegevens += Parameters.Website + "<br>";
            }

            if (Parameters.Email != null && !string.IsNullOrEmpty(Parameters.Email))
            {
                foutief = false;
                adresgegevens += Parameters.Email + "<br>";
            }


            if (Parameters.Logo != null && Parameters.LogoHoofding.ToString() == "")
            {
                foutief = false;
                imgLogo.ImageUrl = Parameters.Logo;
                imgLogo.Visible = true;

            }

            if (Parameters.LogoHoofding.ToString() != "")
            {
                logoHoofd.Style.Add("BACKGROUND-IMAGE", "url(" + Parameters.LogoHoofding + ");width:794px;");
                foutief = false;
                logoHoofding = Parameters.LogoHoofding;
                imgLogo.Visible = false;
            }

            if (Parameters.Logovoet != null)
            {
                foutief = false;
                imgVoet.ImageUrl = Parameters.Logovoet;
                imgVoet.Visible = true;
                imgVoet.Height = 140;
                imgVoet.Width = 794;
            }

            if (!foutief) { lblAdresgegevens.Text = adresgegevens; }

            #endregion
        }
        catch (Exception ex)
        {
            huidigDocument.log("DocumentToevoegen.aspx", "Page_Load", ex.Message.ToString());
        }


        if (!Page.IsPostBack)
        {
            //Huidige datum ophalen volgens het Belgisch formaat.
            //Datum wordt gebruikt om de Documentdatum in te stellen en de vervaldatum.
            DateTime dt = DateTime.Now;
            txtDocumentDatum.Text = dt.ToString("dd-MM-yyyy");
            dt = dt.AddDays(30);
            txtVervaldatum.Text = Parameters.Vervaldatum;

            ddlLand.SelectedValue = "20";
            lblIntraCom.Text = "";


            try
            {
                #region klanten ophalen

                //Klanten invullen met de opgehaalde waardes uit een Dictionary
                foreach (KeyValuePair<string, string> klant in huidigeKlant.KlantenOphalen())
                {
                    string naam = klant.Value;
                    ddlKlant.Items.Add(new System.Web.UI.WebControls.ListItem(naam, naam));
                }

                #endregion

                #region dagboeken ophalen

                //Dagboeken invullen met de opgehaalde waardes uit een Dictionary
                foreach (KeyValuePair<string, string> dagboeken in huidigDocument.Dagboeken())
                {
                    //ddlDagboek.Items.Clear();
                    string ID = dagboeken.Key;
                    string omschrijving = dagboeken.Value;
                    ddlDagboek.Items.Add(new System.Web.UI.WebControls.ListItem(omschrijving, ID));
                }

                #endregion

                #region postcodes ophalen

                //Postcodes invullen met de opgehaalde waardes uit een Dictionary
                foreach (KeyValuePair<string, string> postcode in huidigeKlant.Postcodes())
                {
                    string ID = postcode.Key;
                    string gemeente = postcode.Value;
                    ddlGemeente.Items.Add(new System.Web.UI.WebControls.ListItem(gemeente, ID));
                }

                huidigDocument.DocumentNummerOpvragen(int.Parse(ddlDagboek.SelectedValue));
                txtDocNr.Text = huidigDocument.documentCode + " / " + huidigDocument.huidigDocumentNummer;

                #endregion

                #region landen ophalen

                //Landen invullen met de opgehaalde waardes uit een Dictionary
                foreach (KeyValuePair<string, string> land2 in huidigeKlant.Landen())
                {
                    string ID = land2.Key;
                    string land = land2.Value;
                    ddlLand.Items.Add(new System.Web.UI.WebControls.ListItem(land, ID));
                }

                huidigDocument.DocumentTitelOpvragen(int.Parse(ddlDagboek.SelectedValue));
                lblDocumentTitel.Text = huidigDocument.documentTitel;

                #endregion
            }
            catch (Exception ex)
            {
                huidigDocument.log("DocumentToevoegen.aspx", "Page_Load", ex.Message.ToString());
            }
        }
    }

    private void GenerateTable(int existing, int rowsCount)
    {
        try
        {
            //Alle data halen uit de PassThrough class om opnieuw een connectie te maken met SharePoint
            ClientContext clientContext = ContextTokensOphalen();

            Table table = Page.Form.FindControl("tblArtikels") as Table;

            if (table == null)
            {
                table = new Table();
                table.ID = "tblArtikels";
                Page.Form.Controls.Add(table);
            }
            else
            {
                if (existing == 0)
                {
                    table.Controls.Clear();
                }
            }

            //The number of Columns to be generated
            const int colsCount = 6;//You can changed the value of 3 based on you requirements

            // Now iterate through the table and add your controls
            for (int i = existing; i < rowsCount; i++)
            {
                if (!dicArtikels.ContainsKey(i))
                {
                    Artikels artikel = new Artikels();
                    dicArtikels.Add(i, artikel);
                }

                TableRow row = new TableRow();
                for (int j = 0; j < colsCount; j++)
                {
                    TableCell cell = new TableCell();
                    //means the first column of the Table
                    if (j == 0)
                    {
                        cell.Width = 40;
                        //Create the CheckBox
                        CheckBox cb = new CheckBox();
                        // Set a unique ID for each CheckBox
                        cb.ID = "CheckBoxRow_" + i + "Col_" + j;
                        // Add the control to the FIRST TableCell
                        cell.Controls.Add(cb);
                        // Add the TableCell to the TableRow
                        row.Cells.Add(cell);

                    }
                    //2de kolom
                    else if (j == 1)
                    {
                        cell.Width = 60;
                        //Create the TextBox
                        TextBox tb = new TextBox();
                        // Set a unique ID for each TextBox
                        tb.ID = "TextBoxRow_" + i + "Col_" + j;
                        tb.Width = 40;
                        tb.EnableViewState = true;
                        tb.EnableTheming = true;
                        // Add the control to the TableCell
                        cell.Controls.Add(tb);
                        // Add the TableCell to the TableRow
                        row.Cells.Add(cell);
                    }
                    //Kolom 3
                    else if (j == 2)
                    {
                        cell.Width = 310;
                        cell.HorizontalAlign = HorizontalAlign.Right;
                        //Create the TextBox
                        TextBox tb = new TextBox();
                        // Set a unique ID for each TextBox
                        tb.ID = "TextBoxRow_" + i + "Col_" + j;
                        tb.Width = 290;
                        tb.EnableViewState = true;
                        tb.EnableTheming = true;
                        tb.TextMode = TextBoxMode.MultiLine;
                        // Add the control to the TableCell
                        cell.Controls.Add(tb);
                        // Add the TableCell to the TableRow
                        row.Cells.Add(cell);

                    }
                    //Kolom 4
                    else if (j == 3)
                    {
                        cell.Width = 160;
                        cell.HorizontalAlign = HorizontalAlign.Right;
                        //Create the TextBox
                        TextBox tb = new TextBox();
                        // Set a unique ID for each TextBox
                        tb.ID = "TextBoxRow_" + i + "Col_" + j;
                        //tb.TextChanged += new EventHandler(txtArtikelPrijs_TextChanged);
                        tb.Width = 140;
                        tb.EnableViewState = true;
                        tb.EnableTheming = true;
                        // Add the control to the TableCell
                        cell.Controls.Add(tb);
                        // Add the TableCell to the TableRow
                        row.Cells.Add(cell);
                    }
                    //Kolom 5
                    else if (j == 4)
                    {
                        cell.Width = 160;
                        cell.HorizontalAlign = HorizontalAlign.Right;
                        //Create the TextBox
                        TextBox tb = new TextBox();
                        // Set a unique ID for each TextBox
                        tb.ID = "TextBoxRow_" + i + "Col_" + j;
                        //tb.TextChanged += new EventHandler(txtArtikelPrijs_TextChanged);
                        tb.Width = 140;
                        tb.Enabled = false;
                        tb.BackColor = System.Drawing.ColorTranslator.FromHtml("#F2F2F2");
                        tb.TabIndex = -1;
                        tb.EnableViewState = true;
                        tb.EnableTheming = true;
                        // Add the control to the TableCell
                        cell.Controls.Add(tb);
                        // Add the TableCell to the TableRow
                        row.Cells.Add(cell);
                    }
                    //Kolom 6
                    else if (j == 5)
                    {
                        cell.HorizontalAlign = HorizontalAlign.Right;
                        cell.Width = 64;
                        //Create the TextBox
                        DropDownList ddl = new DropDownList();
                        // Set a unique ID for each TextBox
                        ddl.ID = "DropDownRow_" + i + "Col_" + j;
                        ddl.Width = 50;
                        ddl.TabIndex = -1;
                        ddl.EnableViewState = true;
                        ddl.EnableTheming = true;
                        ddl.Items.Clear();
                        //Lijst met artikelen ophalen en dropdown opvullen
                        List oListBTW = clientContext.Web.Lists.GetByTitle("Lijst BTWcodes");

                        clientContext.ExecuteQuery();


                        CamlQuery cQBTW = new CamlQuery();
                        cQBTW.ViewXml = "<View>"
                        + "<Query>"
                        + "</Query>"
                        + "</View>";

                        Microsoft.SharePoint.Client.ListItemCollection btwListItem = oListBTW.GetItems(cQBTW);
                        clientContext.Load(btwListItem);
                        clientContext.ExecuteQuery();

                        foreach (Microsoft.SharePoint.Client.ListItem btwItem in btwListItem)
                        {
                            string btwcode = btwItem["bcCode"].ToString();
                            string btwpercentage = btwItem["bcBTW"].ToString();
                            ddl.Items.Add(new System.Web.UI.WebControls.ListItem(btwpercentage, btwcode));
                        }

                        if (i >= initNumRows && ddlBTWregime.Items.Count > 0)
                        {
                            if (ddlBTWregime.SelectedItem.Value == "Medecontractant" || ddlBTWregime.SelectedItem.Value == "intracom goederen" || ddlBTWregime.SelectedItem.Value == "intracom diensten")
                            {
                                ddl.Enabled = false;
                                ddl.SelectedItem.Text = "0";
                                ddl.BackColor = System.Drawing.ColorTranslator.FromHtml("#F2F2F2");
                            }
                            else if (ddlBTWregime.SelectedItem.Value == "BTW 6%")
                            {
                                ddl.Enabled = false;
                                ddl.SelectedItem.Text = "6";
                                ddl.BackColor = System.Drawing.ColorTranslator.FromHtml("#F2F2F2");
                            }
                            else
                            {
                                ddl.Enabled = true;
                                ddl.BackColor = System.Drawing.ColorTranslator.FromHtml("#FFFFFF");
                            }
                        }

                        // Add the control to the TableCell
                        cell.Controls.Add(ddl);
                        // Add the TableCell to the TableRow
                        row.Cells.Add(cell);
                    }
                }
                // And finally, add the TableRow to the Table
                tblArtikels.Rows.Add(row);
            }

            //Sore the current Rows Count in ViewState
            numOfRows = rowsCount;
        }
        catch (Exception ex)
        {
            huidigDocument.log("DocumentToevoegen.aspx", "Genereer tabel", ex.Message.ToString());
        }
    }

在.cs文件下面我用来从SharePoint获取列表项=&gt;

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Client;

namespace AdminCareWeb
{
public class Klanten
{
    SharePointContextToken contextToken;
    string accessToken;
    string currentUser;
    Uri sharepointUrl;
    string contextTokenString;
    Document logging = new Document();

    #region props

    public string KlantID { get; set; }
    public string KlantNaam { get; set; }
    public string KlantAdres { get; set; }
    public string KlantAdres2 { get; set; }
    public string KlantPostcode { get; set; }
    public string KlantPlaats { get; set; }
    public string KlantLand { get; set; }
    public string KlantOndernemingsnummerVoorloopcode { get; set; }
    public string KlantOndernemingsnummer { get; set; }

    #endregion

    //Lijst maken van alle landen uit de SharePoint lijst landen.
    public Dictionary<string, string> Landen()
    {
        Dictionary<string, string> landenLijst = new Dictionary<string, string>();

        try
        {
            contextToken = PassThrough.contextToken;
            sharepointUrl = PassThrough.sharepointUrl;
            accessToken = PassThrough.accessToken;
            ClientContext clientContext = TokenHelper.GetClientContextWithAccessToken(sharepointUrl.ToString(), accessToken);

            // Lijst met Landen ophalen en dropdown vullen
            List oListLanden = clientContext.Web.Lists.GetByTitle("Lijst landen");

            clientContext.ExecuteQuery();
            CamlQuery cQLand = new CamlQuery();
            cQLand.ViewXml = "<View><Query></Query></View>";
            Microsoft.SharePoint.Client.ListItemCollection landListItem = oListLanden.GetItems(cQLand);
            clientContext.Load(landListItem, items => items.Include(
                item => item["ID"],
                item => item["LDnaam"]));
            clientContext.ExecuteQuery();

            foreach (Microsoft.SharePoint.Client.ListItem landItem in landListItem)
            {
                string ID = landItem["ID"].ToString();
                string landNaam = landItem["LDnaam"].ToString();
                landenLijst.Add(ID, landNaam);
            }

        }
        catch (Exception ex)
        {
            logging.log("Klanten.cs", "Landen ophalen", ex.Message.ToString());
        }

        return landenLijst;
    }



    //Lijst maken van alle postcodes uit de SharePoint lijst postcodes en gemeentes.
    public Dictionary<string, string> Postcodes()
    {
        Dictionary<string, string> postcodesLijst = new Dictionary<string, string>();

        try
        {
            contextToken = PassThrough.contextToken;
            sharepointUrl = PassThrough.sharepointUrl;
            accessToken = PassThrough.accessToken;
            ClientContext clientContext = TokenHelper.GetClientContextWithAccessToken(sharepointUrl.ToString(), accessToken);

            //Lijst met postcodes ophalen en dropdown opvullen
            List oListPostcodes = clientContext.Web.Lists.GetByTitle("Lijst postcodes");

            clientContext.ExecuteQuery();

            CamlQuery cQPostcodes = new CamlQuery();
            cQPostcodes.ViewXml = "<View>"
                + "<Query>"
                + "<OrderBy><FieldRef Name='PCgemeente'/></OrderBy>"
                + "</Query>"
                + "</View>";

            //Lijst aanmaken met het resultaat van de uitgevoerde query.
            Microsoft.SharePoint.Client.ListItemCollection postcodeListItem = oListPostcodes.GetItems(cQPostcodes);
            clientContext.Load(postcodeListItem, items => items.Include(
                item => item["ID"],
                item => item["PCgemeente"]));
            clientContext.ExecuteQuery();

            foreach (Microsoft.SharePoint.Client.ListItem postcodeItem in postcodeListItem)
            {
                string ID = postcodeItem["ID"].ToString();
                string gemeente = postcodeItem["PCgemeente"].ToString();
                postcodesLijst.Add(ID, gemeente);
            }

        }
        catch (Exception ex)
        {
            logging.log("Klanten.cs", "Postcodes ophalen", ex.Message.ToString());
        }

        return postcodesLijst;
    }

    //Lijst maken van alle landen uit de SharePoint lijst landen.
    public Dictionary<string, string> KlantenOphalen()
    {
        Dictionary<string, string> klantenLijst = new Dictionary<string, string>();

        try
        {
            contextToken = PassThrough.contextToken;
            sharepointUrl = PassThrough.sharepointUrl;
            accessToken = PassThrough.accessToken;
            ClientContext clientContext = TokenHelper.GetClientContextWithAccessToken(sharepointUrl.ToString(), accessToken);

            // Lijst met Landen ophalen en dropdown vullen
            List oListKLanten = clientContext.Web.Lists.GetByTitle("Lijst Relaties");

            clientContext.ExecuteQuery();
            CamlQuery cQKlant = new CamlQuery();
            cQKlant.ViewXml = "<View>"
            + "<Query>"
            + "<Where><Eq><FieldRef Name='RLtyperelatie' /><Value Type='Choice'>Klant</Value></Eq></Where>"
            + "<OrderBy><FieldRef Name='RLnaam'/></OrderBy>"
            + "</Query>"
            + "</View>";

            Microsoft.SharePoint.Client.ListItemCollection klantListItem = oListKLanten.GetItems(cQKlant);
            clientContext.Load(klantListItem, items => items.Include(
                item => item["RLnaam"]));
            clientContext.ExecuteQuery();

            foreach (Microsoft.SharePoint.Client.ListItem klantItem in klantListItem)
            {
                string klantNaam = klantItem["RLnaam"].ToString();
                klantenLijst.Add(klantNaam, klantNaam);
            }

        }
        catch (Exception ex)
        {
            logging.log("Klanten.cs", "Klanten ophalen", ex.Message.ToString());
        }

        return klantenLijst;
    }
}
}

任何人都有一些加快的建议。问题是现在需要7到8秒才能显示页面。回发需要3-5秒。

0 个答案:

没有答案