DataList nn maniene il selectedvalue dopo il postBack

giovedì 18 marzo 2010 - 15.26

morphi Profilo | Newbie

Sicuramente c'è qualche concetto di base che mi sfugge,
la situazione è semplice io ho un controllo data list che alla selezione passa un parametro per filtrare una gridview.

tutto funziona correttamente tranne che nella paginazione e nel sorting della gridview, quando cambio pagina la grid view si perde ilparametro , o meglio la dataList non lo mantiene.

hoprovato mettendo un dropdawnlist e funziona quindi il problema è la dataList..

qualcuno ha info da darmi per risolvere il problema?

grazie in anticipo

amelix Profilo | Expert

La gridView viene ricostruita al PostBack?
Andrea
http://www.formulawan.com/?ref=DinaMelix

morphi Profilo | Newbie

si viene ricostruita e non trovando il prametro risulta vuota o con il pram di default

amelix Profilo | Expert

In teoria NON devi ricostruirla perché ci pensa il viewstate/state control a mantenerla viva.

Prova e vedrai che funziona.


Andrea
http://www.formulawan.com/?ref=DinaMelix

morphi Profilo | Newbie

perdonami ma non riesco a capirti

questo è il codice

<asp:Panel ID="lista" runat="server">
<div class="DataListRassegna">
<asp:Label ID="lblSelectedIndex" runat="server" Text="anno" EnableViewState="true"></asp:Label>
<asp:DataList ID="DataList1" runat="server" DataSourceID="SqlDataSource2" DataKeyField="anno" CssClass="ListRassegna" CellPadding="0" OnSelectedIndexChanged="datalist1_selectedIndexChanged" EnableViewState="true" >
<ItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" CommandName="Select" CssClass="menuText" runat="server" >
<span class="menuText"><%# "Rassegna " + Eval("anno") %></span><span class="tab-l">&nbsp;</span><span class="tab-r">&nbsp;</span>
</asp:LinkButton>
</ItemTemplate>
</asp:DataList>

<%-- <asp:DropDownList ID="DataList1" DataSourceID="SqlDataSource2" DataTextField="anno" DataValueField="anno" runat="server" AutoPostBack="true">
</asp:DropDownList>--%>
</div>
</asp:Panel>
<asp:Panel ID="gridview" runat="server">
<asp:GridView ID="GridView1" runat="server" AllowPaging="True" AllowSorting="True" AutoGenerateColumns="true" DataKeyNames="idArticolo" DataSourceID="SqlDataSource1">

</asp:GridView>
</asp:Panel>

<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ Appsettings:MSSQLConnectionStringOldUninettuno %>"
SelectCommand="SELECT [idArticolo], [dataText],convert(datetime, dataText,103)as data,[testata], [titolo] FROM [TArticoli] WHERE [idTipo]='1' AND isVisible = '1' and dataText <> '' and dataText <> 'non rimuovere' order by data desc"
ProviderName="System.Data.SqlClient"

FilterExpression="SUBSTRING(dataText,7,4) ='{0}'">
<FilterParameters>
<asp:ControlParameter ControlID="DataList1" Name="dText"
PropertyName="selectedvalue" Type="String" />
</FilterParameters>


</asp:SqlDataSource>

<asp:SqlDataSource ID="SqlDataSource2" runat="server"
ConnectionString="<%$ Appsettings:MSSQLConnectionStringOldUninettuno %>"
EnableViewState="True"
SelectCommand="SELECT SUBSTRING(dataText,7,4)as anno FROM [TArticoli] WHERE [idTipo]='1' AND isVisible = '1' and dataText <> '' group by SUBSTRING(dataText,7,4)order by SUBSTRING(dataText,7,4) desc">
</asp:SqlDataSource>

amelix Profilo | Expert

><asp:DataList ID="DataList1" runat="server" DataSourceID="SqlDataSource2"
>DataKeyField="anno" CssClass="ListRassegna" CellPadding="0"
>OnSelectedIndexChanged="datalist1_selectedIndexChanged"
Cosa fai dentro questo metodo e/o in pagina?
In teoria non avresti bisogno di questo metodo ... e la pagina dovrebbe funzionare senza problemi.
Andrea
http://www.formulawan.com/?ref=DinaMelix

morphi Profilo | Newbie

inserisco il valore in una label
protected void datalist1_selectedIndexChanged(Object sender, EventArgs e)

{
lblSelectedIndex.Text = DataList1.SelectedValue.ToString();
}

hai detto bene DOBVREBBE funzionare
invece nada
con la dropdown che vedi commentata nessun problema

non riesco a capire

ma la selezione da parte della DataList funziona correttamente, è il paging ed il sorting della grid view che azzerano il filter

amelix Profilo | Expert

Hai verificate se nell'evento del LoadViewState ci sia ancora il valore selezionato al successivo post-back.
Andrea
http://www.formulawan.com/?ref=DinaMelix

morphi Profilo | Newbie

non so come verificarlo ma credo che il problema sia proprio quello

amelix Profilo | Expert

Mi riesci a dare gli script per costruire le due tabelle necessarie così provo a farlo girare?
Andrea
http://www.formulawan.com/?ref=DinaMelix

morphi Profilo | Newbie

puoi tranquillamente creare una tabella semplice con due campi e uno fa da filtro nel datalist

comunque la mia table è

CREATE TABLE [dbo].[TArticoli](
[idArticolo] [int] NOT NULL,
[data] [smalldatetime] NULL,
[dataText] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[idLingua] [int] NULL,
[eventi] [nvarchar](300) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[descrizione] [ntext] COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[hasDetails] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[titolo] [nvarchar](500) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[contenuto] [ntext] COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[isVisible] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[linkDetails] [nvarchar](max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[newsletter] [int] NULL,
[titolo_en] [nvarchar](500) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[titolo_fr] [nvarchar](500) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[titolo_it] [nvarchar](500) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[titolo_ar] [nvarchar](500) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[titolo_sp] [nvarchar](500) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[contenuto_en] [ntext] COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[contenuto_fr] [ntext] COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[contenuto_it] [ntext] COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[contenuto_ar] [ntext] COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[contenuto_sp] [ntext] COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[eventi_en] [nvarchar](300) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[eventi_fr] [nvarchar](300) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[eventi_it] [nvarchar](300) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[eventi_ar] [nvarchar](300) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[eventi_sp] [nvarchar](300) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[descrizione_en] [ntext] COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[descrizione_fr] [ntext] COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[descrizione_it] [ntext] COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[descrizione_ar] [ntext] COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[descrizione_sp] [ntext] COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[testata] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[idTipo] [int] NULL,
[linkDetails_en] [nvarchar](300) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[linkDetails_fr] [nvarchar](300) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[linkDetails_it] [nvarchar](300) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[linkDetails_ar] [nvarchar](300) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[linkDetails_sp] [nvarchar](300) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[dataFine] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[pesoOrdine] [int] NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

grazie

amelix Profilo | Expert

Ci guardo questa sera.

Ciao
Andrea
http://www.formulawan.com/?ref=DinaMelix

morphi Profilo | Newbie

ok grazie


Novità? qualcuno ha avuto idee...
vabbè me sa che opto per la dropdownlist

ma nn capisco e ci esco matto

grazie comunque dell'aiuto
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-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5