Question

J'ai un peu de mal à comprendre le scénario de pagination avec un gridview, c'est-à-dire que je ne parviens pas à afficher la page sanglante à la page 2, 3, 4, etc.

J'ai le code d'affichage en grille suivant

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
               style="z-index: 1; left: 20px; top: 440px; position: absolute; height: 133px; " 
        AllowPaging="True" AllowSorting="True" Font-Size="Small" 

        PageSize="2" onpageindexchanging="GridView1_PageIndexChanging">
        <Columns>

Avec ce qui suit

  protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
    GridView1.PageIndex = e.NewPageIndex;
    GridView1.DataBind();
}

Un code d'erreur "TargetinvocationException" n'a pas été géré par le code utilisateur. "

Étant un débutant, cela dépasse mes capacités actuelles et m'a un peu dérouté. Comment lier correctement ma grille pour permettre à la pagination de fonctionner correctement?

Était-ce utile?

La solution 3

La liaison était en fait bien. Ceci a finalement été trié en ajoutant une clé primaire (que j'aurais vraiment dû implémenter en premier lieu!)

Donc, si quelqu'un lit ceci, ne peut pas faire passer son gridview à travers un objet source de données, assurez-vous d'avoir une clé primaire !!!

Autres conseils

c’est là que les choses deviennent intéressantes! J'utilise une source de données linq:

<asp:LinqDataSource ID="**lqPackWeights**" runat="server"
        ContextTypeName="ORWeightsDataClassesDataContext" 
        Select="new (UnitId, UnitDescription, PackagingTypeCode, UnitWeight, WeightUnitCode, RecycledContent, IsBiodegradable, Recyclability, RevisionSourceCode, RevisionDate, ExtendedMaterialName, MaterialText, WeightStatus, ProductPercentage, UnitUserfield1, UnitUserfield2, IDDesc, MaterialLevel)" 
        TableName="tblOnlineReportingCOMPLETEWeights" Where="IDDesc == @IDDesc">
    </asp:LinqDataSource>

lqPackWeights étant généré via ceci:

private object GetMaterialData(string MemberKey, string MaterialType, string MaterialLevel, int Count)
{
    ORWeightsDataClassesDataContext db = new ORWeightsDataClassesDataContext();
    var query = db.tblOnlineReportingCOMPLETEWeights
                .Where(x => x.MaterialLevel == MaterialLevel && x.MaterialText == MaterialType && x.MemberId == MemberKey)
                .OrderByDescending(x => x.ProductPercentage).Take(Count);
    return query;
}

void protected btSearch_Click (expéditeur d'objet, EventArgs e)     {

    lqPackWeights.WhereParameters.Clear();
    ControlParameter cp = new ControlParameter();
    cp.Type = TypeCode.String;


    if (radBuyer.Checked)
    {
        cp.ControlID = "ddlProd";
        cp.PropertyName = "SelectedValue";
        cp.Name = "IDDesc";
        lqPackWeights.WhereParameters.Add(cp);
        GridView1.DataSourceID = "lqPackWeights";
        GridView1.DataBind();
    }

    else if (radProd.Checked)
    {
        cp.ControlID = "tbxProdAC";
        cp.PropertyName = "Text";
        cp.Name = "IDDesc";
        lqPackWeights.WhereParameters.Add(cp);
        GridView1.DataSourceID = "lqPackWeights";
        GridView1.DataBind();
    }

Je soupçonne que je suis trop entiché ... comme vous pouvez probablement le dire à partir de mon code, c'est un nouveau territoire pour moi alors soyez gentil avec les abus!

Ok, j'ai lu quelques endroits que j'ai besoin de jeter dans la source de données, donc j'ai maintenant le code suivant

 protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
    GridView1.PageIndex = e.NewPageIndex;
    GridView1.DataSourceID = "lqPackWeights";
}

Maintenant, quand je construis la page, cela fonctionne bien, mais quand je frappe à la page 2 de x, je reçois ce vilain petit message:

Erreur de serveur dans l'application '/ onlineReportingFUNCTIONING'.

Ce fournisseur prend en charge Skip () uniquement sur les requêtes ordonnées renvoyant des entités ou des projections contenant toutes les colonnes d'identité, la requête étant une requête à table unique (sans jointure) ou une requête Distinct, Except, Intersect ou Union ( pas Concat) opération.

De quoi s'agit-il alors?!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top