Hi,
Fixed. Please update from SVN
Also, please note that ViewStateMode="Enabled" is required for each direct event where you use Render method.
It is better to use Hidden instead Visible (in this case it is not required rerender component), Disabled instead Enabled
Here is the changed code
<%@ Page Language="C#" MasterPageFile="~/AjaxEvents/Page.Master" %>
<%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %>
<script runat="server">
protected void Page_Load(object sender, System.EventArgs e)
{
if (Session["load_checkbox"] != null) {
CaricaPericoli(false);
}
}
protected void Button1_Click(object sender, System.EventArgs e)
{
CaricaPericoli(true);
Session["load_checkbox"] = true;
}
private void CaricaPericoli(bool Render)
{
Ext.Net.CompositeField Pannello = CreaGestionePericoli();
if (Pannello == null) return;
Pannello.AutoHeight = false;
Pannello.AutoWidth = false;
FormPanelRichiesta.Add(Pannello);
if (Render) Pannello.Render();
if (Render) FormPanelRichiesta.DoLayout();
}
private Ext.Net.CompositeField CreaGestionePericoli()
{
Ext.Net.CompositeField CompFieldContenitore = new Ext.Net.CompositeField();
CompFieldContenitore.ID = "CompFieldContenitore";
CompFieldContenitore.AnchorHorizontal = "100%";
CompFieldContenitore.HideLabel = true;
CompFieldContenitore.LabelWidth = 0;
Ext.Net.Label lblEtichetta = new Ext.Net.Label();
lblEtichetta.Text = "Pericoli:";
lblEtichetta.Width = 130;
CompFieldContenitore.Items.Add(lblEtichetta);
Ext.Net.Label lblObbligatorio = new Ext.Net.Label();
lblObbligatorio.Text = "*";
lblObbligatorio.StyleSpec = "font-weight: bold; color:red; width:10px;";
lblObbligatorio.Width = 10;
CompFieldContenitore.Items.Add(lblObbligatorio);
Ext.Net.Panel Panel = new Ext.Net.Panel();
Panel.ID = "Panel";
Panel.AnchorHorizontal = "100%";
Panel.Border = false;
Panel.Items.Add(CreaTipoODLPericoli("S"));
Panel.Items.Add(CreaListaPericoli());
CompFieldContenitore.Items.Add(Panel);
return CompFieldContenitore;
}
private Ext.Net.RadioGroup CreaTipoODLPericoli(string Valore)
{
Ext.Net.RadioGroup RadioPericoli = new Ext.Net.RadioGroup();
RadioPericoli.ID = "rdTIPOODLPERICOLI";
RadioPericoli.StyleSpec = "width:90px;";
Ext.Net.Radio PericoloSI = new Ext.Net.Radio();
PericoloSI.Name = RadioPericoli.ID;
PericoloSI.ID = "rdTIPOODLPERICOLI_SI";
PericoloSI.BoxLabel = "SI";
if (Valore == "S") PericoloSI.Checked = true;
RadioPericoli.Items.Add(PericoloSI);
Ext.Net.Radio PericoloNO = new Ext.Net.Radio();
PericoloNO.Name = RadioPericoli.ID;
PericoloNO.ID = "rdTIPOODLPERICOLI_NO";
PericoloNO.BoxLabel = "NO";
if (Valore != "S") PericoloNO.Checked = false;
RadioPericoli.Items.Add(PericoloNO);
RadioPericoli.DirectEvents.Change.EventMask.ShowMask = true;
RadioPericoli.DirectEvents.Change.EventMask.Msg = "";
RadioPericoli.DirectEvents.Change.Event += AbilitaPericoli;
return RadioPericoli;
}
protected void AbilitaPericoli(object sender, DirectEventArgs e)
{
Ext.Net.Radio PericoloSI = FormPanelRichiesta.FindControl("rdTIPOODLPERICOLI_SI") as Ext.Net.Radio;
if (PericoloSI == null) return;
Ext.Net.Panel PanelPericoli = FormPanelRichiesta.FindControl("PanelPericoli") as Ext.Net.Panel;
if (PericoloSI.Checked) {
PanelPericoli.Hidden = false;
}
else {
PanelPericoli.Hidden = true;
}
}
private Ext.Net.Panel CreaListaPericoli()
{
Ext.Net.Panel Panel = new Ext.Net.Panel();
Panel.ID = "PanelPericoli";
Panel.AnchorHorizontal = "100%";
Panel.Border = false;
Ext.Net.CheckboxGroup chkListaPericoli = new Ext.Net.CheckboxGroup();
chkListaPericoli.ID = "chkPericoli";
chkListaPericoli.ColumnsNumber = 1;
for (int i = 0; i <= 4; i++) {
Ext.Net.Checkbox chkPericolo = new Ext.Net.Checkbox();
chkPericolo.ID = "chkPERICOLO_" + i + 1;
chkPericolo.BoxLabel = "PERICOLO " + i + 1;
chkListaPericoli.Items.Add(chkPericolo);
}
Ext.Net.Checkbox chkAltroPericolo = new Ext.Net.Checkbox();
chkAltroPericolo.ID = "chkPERICOLO_ALTRO";
chkAltroPericolo.BoxLabel = "ALTRO";
chkAltroPericolo.DirectEvents.Check.Event += AltroPericolo;
chkListaPericoli.Items.Add(chkAltroPericolo);
Panel.Items.Add(chkListaPericoli);
//Devo inserire la textbox in un pannello per visualizzarla o nasconderla a seconda del checkbox "ALTRO"
Ext.Net.Panel PanelAltroPericolo = new Ext.Net.Panel();
PanelAltroPericolo.ID = "PanelAltroPericolo";
PanelAltroPericolo.AnchorHorizontal = "100%";
PanelAltroPericolo.Border = false;
Ext.Net.TextField txtAltroPericolo = new Ext.Net.TextField();
txtAltroPericolo.ID = "txtALTROPERICOLO";
txtAltroPericolo.Width = Unit.Pixel(400);
txtAltroPericolo.Visible = false;
txtAltroPericolo.Enabled = false;
PanelAltroPericolo.Items.Add(txtAltroPericolo);
Panel.Items.Add(PanelAltroPericolo);
return Panel;
}
protected void AltroPericolo(object sender, DirectEventArgs e)
{
Ext.Net.Panel PanelAltroPericolo = FormPanelRichiesta.FindControl("PanelAltroPericolo") as Ext.Net.Panel;
if (PanelAltroPericolo == null) return;
Ext.Net.TextField txtAltroPericolo = PanelAltroPericolo.FindControl("txtALTROPERICOLO") as Ext.Net.TextField;
if (txtAltroPericolo == null) return;
Ext.Net.Panel Panel = FormPanelRichiesta.FindControl("PanelPericoli") as Ext.Net.Panel;
if (Panel == null) return;
Ext.Net.Checkbox chkAltroPericolo = Panel.FindControl("chkPERICOLO_ALTRO") as Ext.Net.Checkbox;
if (chkAltroPericolo.Checked) {
txtAltroPericolo.Hidden = false;
txtAltroPericolo.Disabled = false;
}
else {
txtAltroPericolo.Text = "";
txtAltroPericolo.Hidden = true;
txtAltroPericolo.Disabled = true;
}
PanelAltroPericolo.Render();
FormPanelRichiesta.DoLayout();
}
</script>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<ext:Button ID="Button1" runat="server" Text="load checkbox">
<DirectEvents>
<Click OnEvent="Button1_Click" ViewStateMode="Enabled"></Click>
</DirectEvents>
</ext:Button>
<ext:Panel ID="PanelRichiesta" runat="server" Title="Richiesta" MonitorValid="true" Border="false" ButtonAlign="Center" BodyStyle="padding:2px;" AutoScroll="true">
<Items>
<ext:FormPanel ID="FormPanelRichiesta" runat="server" Title="" Padding="5" MonitorResize="true" ButtonAlign="Center">
<Items>
<ext:Label ID="LabelMessaggio" runat="server" StyleSpec="font-weight: bold; color:red;"/>
<ext:CompositeField ID="CompositeField4" runat="server" AnchorHorizontal="100%" HideLabel="true" LabelWidth="0">
<Items>
<ext:Label ID="Label4" runat="server" Text="Descrizione:" Width="130"></ext:Label>
<ext:Label ID="Label1" runat="server" Text="*" StyleSpec="font-weight: bold; color:red;" Width="10">
</ext:Label>
<ext:TextArea runat="server" ID="TextAreaDescrizione" Width="700">
</ext:TextArea>
</Items>
</ext:CompositeField>
</Items>
<Buttons>
<ext:Button ID="SalvaRichiesta" runat="server" Icon="BulletGo" Text="Inserisci Richiesta" >
</ext:Button>
</Buttons>
</ext:FormPanel>
</Items>
</ext:Panel>
</asp:Content>