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