Pergunta

Estou tendo um pouco de dificuldade em resolver o cenário de paginação com uma Gridview, ou seja, não consigo obter a coisa sangrenta a mostrar, 2, 3, 4, etc.

Eu tenho o seguinte código de visualização da grade

<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>

Com o seguinte

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

Agora, estou recebendo um "TargetInvocationException não foi tratado pelo código do usuário".

Sendo um novato, isso está além das minhas capacidades atuais e me confundiu um pouco. Como faço para vincular minha GridView corretamente para permitir que a paginação esteja funcionando corretamente?

Foi útil?

Solução 3

A ligação estava realmente bem. Isso finalmente foi classificado adicionando uma chave primária (que eu realmente deveria ter implementado em primeiro lugar!)

Portanto, se alguém estiver lendo isso, não pode obter sua GridView para Page através de um objectDataSource, verifique se você tem uma chave primária !!!

Outras dicas

É onde as coisas começam a ficar interessantes! Estou usando uma fonte de dados 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>

Os pesos lqpacks sendo gerados por meio disso:

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 protegido btsearch_click (remetente de objeto, 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();
    }

Eu suspeito que tenho muitos vínculos chutando ... Como você pode provavelmente dizer pelo meu código, este é um novo território para mim, então seja gentil com o abuso!

Ok, eu li alguns lugares que preciso lançar na fonte de dados, então agora tenho o seguinte código

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

Agora, quando eu construo a página, funciona bem, mas quando eu clico na página 2 de x, recebo esta pequena mensagem desagradável:

Erro do servidor no aplicativo '/onLineReportingFunctioning'.

Este provedor suporta Skip () apenas sobre consultas ordenadas que retornam entidades ou projeções que contêm todas as colunas de identidade, onde a consulta é uma consulta de mesa única (não-joa), ou é uma distinta, exceto, intersect, ou união (não concat) Operação.

O que é isso então?!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top