Domanda

Ho una gridview che ha la proprietà DataSourceID set personalizzato per un ObjectDataSource oggetto.Quando AllowPaging è impostata su True, il GridView scompare dopo un postback.Se ho impostato AllowPaging False va bene.Qualcuno può far luce su questo per me?:)

Edit: L'altra cosa che mi sono confuso circa è ho pensato che se si imposta la DataSourceID che la griglia di ottenere i dati dall'origine dati ogni volta che è necessario.Se la griglia è in via di estinzione perché non contiene i dati, perché non è il gridview ottenere i dati dall'origine dati?

È stato utile?

Soluzione

E 'possibile che dopo che si verifica il postback l'origine dati non viene mantenuta o riempito e non ci sono elementi per popolare la griglia. Stai gestendo stato correttamente per l'oggetto origine dati (rilegatura / mantenere la fonte viva) quando il paging è attivato?

Questo può sembrare una risposta vaga, ma senza un esempio di come la fonte è sempre il dato è un po 'difficile da diagnosticare perché gli articoli sarebbero spariti.

Modifica:
Il metodo Stavo pensando di stato per la richiamata di paging / ordinamento. Tuttavia ho trovato alcune informazioni ont lui ODS e Paging .. assicurarsi di aver impostato il seguente:

  1. GridView: AllowPaging e ovviamente è necessario impostare PageSize.
  2. ObjectDataSource: EnablePaging, anche è necessario impostare il:
    • MaximumRowsParameterName = "maxRows"
    • StartRowIndexParameterName = "startRowIndex"
    • SelectCountMethod = "RecordCount"

Credo che avete solo bisogno di impostare le voci 3 sub di punto 2 se si desidera gestire dimensioni di paging ecc manualmente.

Poi si può leggere di più su questo qui .

Altri suggerimenti

Per rispondere a più di @adam0101 risposta, cosa Penso si intende per "...Si scopre che mia origine dati personalizzati di ritorno zero per il conteggio dei record.", è che potrebbe essere necessario "ri-collegare"l'origine dati per il gridview.ASP.net automaticamente sa che sei retriving record'n', dove 'n' è la prima riga della pagina successiva.Questa soluzione è più semplice per i casi in cui non si desidera consentire l'asp.net per gestire automaticamente i dati nel gridview, forse a causa di voler caricare i dati dopo un altro evento (un CARICO di DATI pulsante per esempio), e non quando la pagina è caricata per la prima volta.Ma come Adamo menzionati qui di seguito il vero motivo era lui "...aveva creato un datasource sottoclasse che ereditato ObjectDataSource, ma è stato implementato in modo non corretto.".Mi dispiace per la mia ipotesi c'Adamo.Grazie

Tuttavia, il resto della mia soluzione penso che funzionerà per chi è bloccato sull'utilizzo manualmente derivati fonti di dati.

ie

Impostare il GridView come sopra, e senza una proprietà DataSource!Qui è il mio esempio:

     <asp:GridView ID="gvStudents" DataKeyNames="StudentID" runat="server" 
            ShowFooter="True" AutoGenerateColumns="False" Width="100%" AllowSorting="True" AllowPaging="true" PageSize="10" OnPageIndexChanging="gvStudents_PageIndexChanging">

Fate un metodo privato o di routine che si possono chiamare quando ti serve per forza il gridview in una nuova pagina.

private void BindGridViewServer(GridView gv1)
{
    gv1.DataSource = sdsStudents;   //re-attach the datasource
    gv1.DataBind();                 //get a page of data AllowPaging must be true
}

Quindi, creare un OnPageIndexChanging metodo:

protected void gvStudents_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
    GridView myGV = (GridView)sender;
    myGV.PageIndex = e.NewPageIndex;
    BindGridViewServer(myGV);
}

Per completare questa risposta, ecco il mio codice dove caricare i dati, quando ho voglia, non quando un PostPack è licenziato, che è il default...

    protected void btnSEARCH(object sender, EventArgs e)
        {
//some code
                    //bind the gridview to the datasource here and then bind!
                    gvStudents.DataSource = sdsStudents;
                    gvStudents.DataBind();
//more code etc
        }
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top