Hi Walter,
I try to explain my page later.
I've found too the post you reported, but I think it's a different thing.
Or, better, a similar problem in a diffent way. I think that ASP.NET doesn't
validate viewstate posting data with AJAX, because some controls are
dinamically loaded into the page as ajax response.
However, I solved the problem. I don't know if its because now my
usercontrol uses a formView instead of other datacontrols, or if because I
change something else (I was working on the page with
ViewStateEncryptionMode="Never", so I did'nt made any specific test), but
now I can remove ViewStateEncryptionMode="Never" and it works.
However, I post the code of my page so you can understand my problem:
This is my first updatepanel:
<asp:UpdatePanel ID="upOptions" runat="server" EnableViewState="False"
UpdateMode="Conditional">
<ContentTemplate>
<asp:GridView ID="gwOptions" DataSourceID="ds1" runat="server"
EnableViewState="False" ShowHeader="False" SkinID="gwNoDataKeyNames"
Width="100%"
AutoGenerateColumns="False">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:Image ID="imgStepNotCompleted" Visible='<%# not
Cbool(Eval("Completed")) %>'
runat="server" ImageUrl="~/images/misc/homeStep.gif" />
<asp:Image ID="imgStepCompleted" Visible='<%# Cbool(Eval("Completed")) %>'
runat="server"
ImageUrl="~/images/misc/homeStep_complete.gif" />
</ItemTemplate>
<ItemStyle HorizontalAlign="Left" VerticalAlign="Middle" Width="50px" />
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:HyperLink ID="linkService" runat="server" Text='<%#
Eval("localizedName") %>'
NavigateUrl='<%# Eval("managementPagePath") %>'></asp:HyperLink>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:ImageButton ID="btnSelect" runat="server" Visible='<%#
cbool(Eval("Completed")) %>'
CommandName="Select" CommandArgument='<%# eval("ServiceType") %>'
EnableViewState="False" ImageUrl="~/images/misc/homeStep_preview.gif" />
</ItemTemplate>
<ItemStyle HorizontalAlign="Right" VerticalAlign="Middle" Width="50px" />
</asp:TemplateField>
</Columns>
</asp:GridView>
</ContentTemplate>
</asp:UpdatePanel>
And this is the second updatePanel:
<asp:UpdatePanel ID="upPreview" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp
anel ID="panelPreview" runat="server" Visible="false">
<div class="webPartPanelTitle3" style="">
<asp:Label ID="lblPreviewTitle" runat="server"
meta:resourcekey="lblPreviewTitle"
EnableViewState="false">Anteprima</asp:Label>
</div>
<div class="webPartPanel3" style="padding-top: 10px; padding-left: 5px;
padding-bottom: 10px;
padding-right: 5px;">
<asp
laceHolder ID="phPreview" runat="server"
EnableViewState="False"></asp
laceHolder>
</div>
</asp
anel>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="gwOptions"
EventName="SelectedIndexChanged" />
</Triggers>
</asp:UpdatePanel>
Then, in codebehind, I make this dynamic load:
Protected Sub gwOptions_RowCommand(ByVal sender As Object, ByVal e As
System.Web.UI.WebControls.GridViewCommandEventArgs) Handles
gwOptions.RowCommand
Select Case e.CommandName
Case "Select"
Me.phPreview.Controls.Clear()
Select Case CType([Enum].Parse(GetType(ServiceTypes), e.CommandArgument),
ServiceTypes)
Case mainCard
Me.phPreview.Controls.Add(Me.LoadControl("~/Controls/Previews/ctlPreviewMainCard.ascx"))
Case secondaryCards
Me.phPreview.Controls.Add(Me.LoadControl("~/Controls/Previews/ctlPreviewSecondaryCards.ascx"))
Case passes
Me.phPreview.Controls.Add(Me.LoadControl("~/Controls/Previews/ctlPreviewPasses.ascx"))
[etc....]
End Select
End Select
The ctlPreviewMainCard.ascx control now contains a formView .
<asp:FormView ID="fvItem" runat="server" EnableViewState="false"
DataKeyNames="ID" DataSourceID="dataSourceMainCard">
<ItemTemplate>
etc..
If also contains an objectDataSource that retrieve data in a vary simple
way:
<asp:ObjectDataSource ID="dataSourceMainCard" runat="server"
EnableViewState="False"
OldValuesParameterFormatString="original_{0}" SelectMethod="GetCards"
TypeName="DataSources.Cards">
<SelectParameters>
<asp
arameter DefaultValue="1" Name="type" Type="Object" />
</SelectParameters>
</asp:ObjectDataSource>
That's all
Thanks