Newsgroup: it.comp.www.asp
Titolo: checkbox OnCheckedChanged eseguito solo su selezione!

Ciao a tutti,
Ho un problema che non riesco a risolvere:
il metodo OnCheckedChanged viene correttamente eseguito quando il CheckBox 
viene selezionato, ma se il CheckBox viene deselezionato il metodo non viene 
invece eseguito! (avviene solo che la pagina si ricarica)
Ogni suggerimento/aiuto sara' graditissimo.
Ho un Ajax Accordion che prende i dati da una tabella di un database e nel 
contenuto dell'accordion un Repeater che prende i dati da un'altra tabella 
in relazione all'header selezionato
la struttura della pagina e' complessa ma qui riporto le parti essenziali:
======================aspx page========================================
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Shipping.aspx.cs" 
Inherits="test" MaintainScrollPositionOnPostback="true" %>
    <ajaxToolkit:ToolkitScriptManager EnablePartialRendering="true" 
runat="Server" ID="ToolkitScriptManager1" />
      <ajaxToolkit:Accordion ID="MyAccordion" runat="server" 
SelectedIndex="0" HeaderCssClass="accordionHeader"
            HeaderSelectedCssClass="accordionHeaderSelected" 
ContentCssClass="accordionContent"
            FadeTransitions="false" FramesPerSecond="1" 
TransitionDuration="1" AutoSize="None"
            RequireOpenedPane="true" SuppressHeaderPostbacks="false" 
Width="900px" >
        <ContentTemplate>
            <asp:Repeater ID="Repeater1" runat="server" 
DataSourceID="SqlDataSource1">
            <ItemTemplate>
                                <asp:CheckBox ID="ManifestCheckBox" 
runat="server" AutoPostBack="true"
                                    Checked="True" OnCheckedChanged = 
"ManifestCheckBox_CheckedChanged" />
            </ItemTemplate>
            </asp:Repeater>
        </ContentTemplate>
      </ajaxToolkit:Accordion>
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
ConnectionString="<%$ ConnectionStrings:XXXXXXXXXXXXXXX %>"
        SelectCommand="SELECT * FROM [tblPICManifest] WHERE ([PICBatchID] = 
@PICBatchID)">
        <SelectParameters>
            <asp:ControlParameter ControlID="selectedLbl" DefaultValue="" 
Name="PICBatchID"
                PropertyName="Text" Type="Int32" />
        </SelectParameters>
    </asp:SqlDataSource>
======================aspx.cs code========================================
protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        else
        {
            ............
        }
protected void ManifestCheckBox_CheckedChanged(object sender, EventArgs e)
{
        Control ctrSender = (Control)sender;
        string controlID = ctrSender.ClientID;
        ............
}
-- 
ciao
Vittorix 

 invece eseguito!
errata corrige: il problema e' quando seleziono, non quando
deseleziono.
quando DESELEZIONO il ManifestCheckBox_CheckedChanged viene chiamato
con il ClientID corretto
io uso questo ClientID per modificare un record in un database.
ad esempio premendo il checkbox numero 17 ho un ClientID:
ctl34_Repeater1_ctl17_ManifestCheckBox
io estraggo "17" che mi serve a modificare il record 17 di una tabella
--
ciao,
Vittorix

 invece eseguito! (avviene solo che la pagina si ricarica)
update: ho scoperto che il metodo OnCheckedChanged viene chiamato
avendo come sender non il corretto checkbox che deseleziono ma con un
altro ClientID! ma come e' possibile? inoltre viene passato
erroneamente Checked=false!
heeeeeelp
--
ciao,
Vittorix