Visualizzazione record a gruppi di 100

giovedì 03 maggio 2007 - 10.25

elsinore Profilo | Junior Member

Ciao a tutti,
il mio ambiente è composto da SharePoint Services 2003, ed utilizzo VisualStudio 2003.
Utilizzo delle WebPart per visualizzare dei recordestratti da un DB Oracle.

Il mio problema è che quando devo estrarre tanti dati (2 , 3000) per visualizzare la pagina ci metto una vita!

Non so se è colpa della query, del Render della Web Part...boh.... allora stavo pensando come era possivile visualizzare magari 100 record alla volta....qualcuno l'ha già fatto? sa darmi qualche dritta?

grazie!!

Wamba Profilo | Expert

>Ciao a tutti,
>il mio ambiente è composto da SharePoint Services 2003, ed utilizzo
>VisualStudio 2003.
>Utilizzo delle WebPart per visualizzare dei recordestratti da
>un DB Oracle.
>
>Il mio problema è che quando devo estrarre tanti dati (2 , 3000)
>per visualizzare la pagina ci metto una vita!
>
>Non so se è colpa della query, del Render della Web Part...boh....
>allora stavo pensando come era possivile visualizzare magari
>100 record alla volta....qualcuno l'ha già fatto? sa darmi qualche
>dritta?
>
>grazie!!

Che metodo usi per visualizzare i dati?
Sembra un problema che abbiamo avuto anche noi con la gestione dell'ado.net e dei Dataset.
-----------------------------------------------------------
Solo chi ha il Caos dentro può generare una stella danzante
Wamba

elsinore Profilo | Junior Member

Guarda, eseguo una query e poi popolo un DataGrid.....


protected override void CreateChildControls()
{

mioDataGrid = new DataGrid();
mioDataGrid.AutoGenerateColumns=false;
mioDataGrid.Width=Unit.Percentage(100);
mioDataGrid.HeaderStyle.HorizontalAlign = System.Web.UI.WebControls.HorizontalAlign.Center;
mioDataGrid.HeaderStyle.Font.Name = "Verdana";
mioDataGrid.HeaderStyle.Font.Bold = true;
mioDataGrid.HeaderStyle.ForeColor = System.Drawing.Color.White;
mioDataGrid.HeaderStyle.BackColor = System.Drawing.Color.Blue;
mioDataGrid.AlternatingItemStyle.BackColor = System.Drawing.Color.FromName("#b0c4ff");
mioDataGrid.SelectedItemStyle.BackColor= System.Drawing.Color.Blue;
mioDataGrid.SelectedItemStyle.ForeColor = System.Drawing.Color.White;

//Add a button to the grid for selection
ButtonColumn objButtonColumn = new ButtonColumn();
objButtonColumn.Text="Seleziona";
objButtonColumn.CommandName="Select";
objButtonColumn.ItemStyle.Width = 70;
objButtonColumn.ItemStyle.HorizontalAlign = System.Web.UI.WebControls.HorizontalAlign.Center;
objButtonColumn.ItemStyle.Font.Name = "Verdana";
grdImansyItems.Columns.Add(objButtonColumn);

//Add data columns
firstObjColumn.DataField="CODCMP";
firstObjColumn.HeaderText="Codice Componente";
firstObjColumn.ItemStyle.Width = 100;
firstObjColumn.ItemStyle.HorizontalAlign = System.Web.UI.WebControls.HorizontalAlign.Center;
firstObjColumn.ItemStyle.Font.Name = "Verdana";
grdImansyItems.Columns.Add(firstObjColumn);

modObjColumn.DataField="MOD2";
modObjColumn.HeaderText="Indice Modifica";
modObjColumn.ItemStyle.Width = 50;
modObjColumn.ItemStyle.HorizontalAlign = System.Web.UI.WebControls.HorizontalAlign.Center;
modObjColumn.ItemStyle.Font.Name = "Verdana";
mioDataGrid.Columns.Add(modObjColumn);


.......



Wamba Profilo | Expert

Per popolare le righe usi un datasource?
-----------------------------------------------------------
Solo chi ha il Caos dentro può generare una stella danzante
Wamba

elsinore Profilo | Junior Member

guarda ti ho allegato un txt con dentro il codice della web part......per evitare di scrivterti cose inesatte......

Wamba Profilo | Expert

Purtroppo non ho il tempo di studiarmelo tutto, ma a da una rapida occhiata ho visto che usi i data adapter.

Quello che succede a grandi linee è:
1) Esegue la query
2) trasferisce tutti i dati dal Server Oracle al Server ASP.NET
3) Esegue la paginazione (se è attiva) ed i filtri
4) Invia l'html al client.

Il problema è nel punto 2 la quantità di dati che vengono trasferiti.
il Data Source non è ottimizzato per grandi quantità di dati. Per velocizzare dovresti usare un datareader e popolare un datasource custom. Perdi la gestione automatica della paginazione e dei filtri, ma non vedo altra scelta.

-----------------------------------------------------------
Solo chi ha il Caos dentro può generare una stella danzante
Wamba

elsinore Profilo | Junior Member

Sei molto gentile.... non avresti un esempio da farmi vedere, cioè come usare un DataReader invece del DataSource?

Grazie!

Wamba Profilo | Expert

Qui trovi un esempio d'uso del datareader.

http://msdn2.microsoft.com/en-us/library/haa3afyz(VS.80).aspx

devi crearti una datatable con le colonne che ti servono

nel loop del while(MyDatareader.read()) popoli la datatable

poi metti nella griglia setti come datasource il datatable che ti sei popolato.
Di più ora non posso fare ;)
-----------------------------------------------------------
Solo chi ha il Caos dentro può generare una stella danzante
Wamba

elsinore Profilo | Junior Member

Grazie, ora guardo, comunque ho provato a lanciare la Query che eseguo nella WebPart, direttamente su Oracle.....i record che mi restituisce sono circa 180.000!
Direi che DataReader a parte, devo trovare il modo di impaginarli questi Record...... sei d'accordo?

Wamba Profilo | Expert

Direi che un'ottima idea!
-----------------------------------------------------------
Solo chi ha il Caos dentro può generare una stella danzante
Wamba

elsinore Profilo | Junior Member

qualcuno non sa se c'è qualche oggetto nelle webpart per impaginare i record?
Mi ricordo che in ASP usavo una cosa tipo AbsoultePage.....
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5