19 messaggi dal 15 gennaio 2004
www.f4w.it
Ciao a tutti.

Sto studiando un po' il controllo GridView che poggia sull'SqlDataSource.

Ho approntato una pagina asp net di prova in cui inserisco i miei due controlli.

Vorrei definire le proprieta di <asp:SqlDataSource> lato server, in VB.net.
Penso di farlo solo al primo caricamento della pagina, perchè immagino che poi tali dati finiscano nel viewState come è normale per un controllo.

Invece lo stato del GridView viene mantenuto, ma tutte le volte sono costretto a ripetere al controllo SqlDataSouce la connectionString, il providerName e il comando di selezione (SelectCommand).
Ho anche provato ad aggiungere al controllo esplicitamente l'attributo:

enableViewState = true

Ma non c'è niente da fare.

Qualcuno mi sa dire perchè per tale controllo le proprietà non vengono mantenute nel viewState?

Allego anche il codice. Nell'esempio ho fatto uso di una master page che però è praticamente vuota e quindi non interessante. Il codice postato referenzia tale master page.

Lato client:
<%@ Page Language="VB" MasterPageFile="~/MasterPage.master" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" title="Untitled Page" %>
<asp:Content ID="Content1" ContentPlaceHolderID="MstContent" Runat="Server">
    Contenuto della prima pagina da inserire in master page<bR /><BR /><BR />
    
    <asp:GridView ID="GdvGenerica" DataSourceID="DSGenerico" runat="server" AutoGenerateColumns="false" AllowPaging="true" 
    AllowSorting="true" PageSize="2" >
        <PagerSettings FirstPageText="Top" Mode="NumericFirstLast" LastPageText="Bottom"  PageButtonCount="10" />
        <Columns>
            <asp:BoundField HeaderText="Progr." DataField="TB51_PRG_FICHIER" ReadOnly="true" SortExpression="TB51_PRG_FICHIER" />
            <asp:BoundField HeaderText="Stato" DataField="TB51_STATO" SortExpression="TB51_STATO" />
            <asp:BoundField HeaderText="Data rif." DataField="DATEDECL" />
        </Columns>
         <rowstyle backcolor="LightCyan" forecolor="DarkBlue" />
         <alternatingrowstyle backcolor="PaleTurquoise" forecolor="DarkBlue" />
    </asp:GridView>
    <!-- 
        Attenzione che se non si specifica l'attributo "ProvideName" 
        viene sollevato un errore fuorviante relativo alla chiave 'DSN' non riconosciuta.
    --> 
    <asp:SqlDataSource ID="DSGenerico" runat="server" DataSourceMode="DataSet" EnableViewState="true"  /><!-- DataSourceMode="DataReader" Utilizzare il "datasourcemode" come "dataReader" aumenta le prestazioni ma non si possono usare le funzioni di ordinamento e paginazione. -->
         
         
    <BR />   
    <a href="seconda.aspx">Vai alla seconda pagina</a>
</asp:Content>




e il rispettivo code behind in VB:


Partial Class _Default
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If Not IsPostBack Then
            configDataSource()
        End If
    End Sub

    Private Sub configDataSource()
        ' Get the connectionStrings.
        DSGenerico.ConnectionString = ConfigurationManager.ConnectionStrings.Item(1).ConnectionString   ' Nella posizione 0 c'è una connectionstring predefinita.
        ' La precedente riga equivale ad aggiungere l'attributo 'ConnectionString' al tag <asp:SqlDataSource> nella parte HTML di questa pagina. Vedere riga sotto:
        ' ConnectionString="<%$ ConnectionStrings:iSeriesSummer %>"

        'Attenzione che se non si specifica l'attributo "ProvideName" 
        'viene sollevato un errore fuorviante relativo alla chiave 'DSN' non riconosciuta.
        ' La precedente riga equivale ad aggiungere l'attributo 'ConnectionString' al tag <asp:SqlDataSource> nella parte HTML di questa pagina. Vedere riga sotto:
        DSGenerico.ProviderName = ConfigurationManager.ConnectionStrings.Item(1).ProviderName
        ' ProviderName="<%$ ConnectionStrings:iSeriesSummer.ProviderName %>"

        DSGenerico.SelectCommand = "Select * from svildta.gpfctb51 order by TB51_PRG_FICHIER"

    End Sub
End Class


Fedroz
----------------------
Corso di Shiatsu a Brescia?
http://www.f4w.it/eldaconti
fedroz wrote:
Qualcuno mi sa dire perchè per tale controllo le proprietà non vengono mantenute nel viewState?

perchè il controllo non è pensato per l'uso che ne fai tu, ma per evitare di avere codice ed usarlo direttamente da markup. e dato che le proprietà in questo caso sono già nel markup, non c'è bisogno che il viewstate ne faccia il restore perchè ci pensa il page parser ad impostarle quando traduce il markup in una classe.

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP
19 messaggi dal 15 gennaio 2004
www.f4w.it
Caspita!
Peccato però...
Mi dà l'impressione che sia molto più ordinato fare queste inizializzazioni lato server, quando almeno ci sono parametri come connectionString e dataProvider... Forse è solo una questione di abitudine, poichè in nell'asp net precedente ho sempre fatto così.
Capisco che sia una sofisticazione e che ad ogni postback non sia un grosso problema ripetere le proprietà.

Grazie mille x il tuo contributo.

ciao.

Fedroz
----------------------
Corso di Shiatsu a Brescia?
http://www.f4w.it/eldaconti
fedroz wrote:
Capisco che sia una sofisticazione e che ad ogni postback non sia un grosso problema ripetere le proprietà.

beh, il motivo principale è anche quello di evitare di ingrossare (ancora) il ViewState. se non ci salvi niente dentro, non lo rendi più grande.
Grazie mille x il tuo contributo.

prego.

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.