Quantcast
Channel: ASP.NET AJAX + Ajax Control Toolkit (ACT)
Viewing all articles
Browse latest Browse all 5678

UpdatePanel + Panel with dynamic content + GridViews

$
0
0

Hi,

I have one 2 CheckBoxList and 1 RadioButtonList that, as they change, I render one or more GridViews based on these selections. The problem is that when the new tables are beeing rendered I'd still like to get some informations of the old one, but for some reason the Panel which I add the new Grids Control comes always empty to me, like I've never redered anything inside it. Probably I'm doing something wrong, but I'm havin a hard time figuring out. Here it is my aspx:

<asp:UpdatePanel ID="UpdatePanelGoals" runat="server" UpdateMode="Conditional"><ContentTemplate><asp:Panel ID="PanelPeriods" runat="server" Visible="true"><h3>Per&iacute;odos</h3><asp:CheckBoxList ID="CheckBoxListPeriods" RepeatColumns="4" CellPadding="3"
                    AutoPostBack="true" runat="server"
                    OnSelectedIndexChanged="CheckBoxListPeriodModality_SelectedIndexChanged"></asp:CheckBoxList></asp:Panel><asp:Panel ID="PanelModalities" runat="server" Visible="true"><h3>Modalidades</h3><asp:CheckBoxList ID="CheckBoxListModalities" RepeatColumns="4" CellPadding="3"
                    AutoPostBack="true" runat="server"
                    OnSelectedIndexChanged="CheckBoxListPeriodModality_SelectedIndexChanged"></asp:CheckBoxList></asp:Panel><asp:Panel ID="PanelGoalsOptions" runat="server" Visible="true"><h3>Op&ccedil;&otilde;es</h3><asp:RadioButtonList ID="RadioButtonListGoalsOptions" RepeatColumns="4" CellPadding="3"
                   AutoPostBack="true" runat="server"
                   OnSelectedIndexChanged="CheckBoxListPeriodModality_SelectedIndexChanged"><asp:ListItem Value="1" Text="Option 1"></asp:ListItem><asp:ListItem Value="2" Text="Option 2"></asp:ListItem><asp:ListItem Value="3" Text="Option 3"></asp:ListItem></asp:RadioButtonList></asp:Panel><asp:Panel ID="PanelGoals" runat="server" Visible="true"><h3>Definir meta</h3><asp:Literal ID="LiteralGoals" runat="server"><div class="alert2">Info message.</div></asp:Literal><asp:Panel ID="PanelGridsPeriodsModalities" runat="server"></asp:Panel></asp:Panel></ContentTemplate></asp:UpdatePanel>

My CheckBoxLists are empty because I fill them later one the code.

All my grids are rendered on the PanelGridsPeriodsModalities, which in the beginning is empty. After I select at least one item on each CheckBoxList and the RadioButtonList the tables are rendered inside the CheckBoxListPeriodModality_SelectedIndexChanged function on codebehind...

Here is my CheckBoxListPeriodModality_SelectedIndexChanged function:

protected void CheckBoxListPeriodModality_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                int numberPeriods = CheckBoxListPeriods.Items.Count;
                for (int i = 0; i < numberPeriods; i++)
                    if (CheckBoxListPeriods.Items[i].Selected)
                        listPeriods.Add(new ListPeriods(Convert.ToInt32(CheckBoxListPeriods.Items[i].Value), CheckBoxListPeriods.Items[i].Text));

                int numberModalities = CheckBoxListModalities.Items.Count;
                for (int i = 0; i < numberModalities; i++)
                    if (CheckBoxListModalities.Items[i].Selected)
                        listModalities.Add(new ListModalities(Convert.ToInt32(CheckBoxListModalities.Items[i].Value), CheckBoxListModalities.Items[i].Text));
            }
            catch (Exception ex) {}

            listPeriods.OrderBy(x => x.id);
            listModalities.OrderBy(x => x.id);

            this.renderTables();
        }

        private void renderTables()
        {
            if (listPeriods.Count() <= 0 || listModalities.Count() <= 0 || RadioButtonListGoalsOptions.SelectedValue == "")
            {
                PanelGridsPeriodsModalities.Controls.Clear();
                LiteralGoals.Visible = true;
                return;
            }

            try
            {
                List<GridView> gridsView = new List<GridView>();

                listModalities.ForEach(modality =>
                {
                    List<GridRow> rows = new List<GridRow>();
                    GridView modalityGrid = new GridView();

                    modalityGrid.UseAccessibleHeader = true;
                    modalityGrid.AutoGenerateColumns = false;
                    modalityGrid.ID = "GridViewModalityPeriod-" + modality.id;

                    listPeriods.ForEach(period =>
                    {
                        rows.Add(new GridRow(modality.id, modality.name, period.id, period.name, 
Realizado, Lata, Galao, Quartinho, "")); }); TemplateField tfModality = new TemplateField(); tfModality.ItemTemplate = new GridViewTemplateText(DataControlRowType.DataRow, "Modalidade"); tfModality.HeaderTemplate = new GridViewTemplateText(DataControlRowType.Header, "Modalidade"); modalityGrid.Columns.Add(tfModality); TemplateField tfPeriod = new TemplateField(); tfPeriod.ItemTemplate = new GridViewTemplateText(DataControlRowType.DataRow, "Período"); tfPeriod.HeaderTemplate = new GridViewTemplateText(DataControlRowType.Header, "Período"); modalityGrid.Columns.Add(tfPeriod); TemplateField tfRealizedYearBefore = new TemplateField(); tfRealizedYearBefore.ItemTemplate = new GridViewTemplateRealized(DataControlRowType.DataRow,
"Realizado ano anterior", Convert.ToInt32(RadioButtonListGoalsOptions.SelectedValue), "Last"); tfRealizedYearBefore.HeaderTemplate = new GridViewTemplateRealized(DataControlRowType.Header,
"Realizado ano anterior", Convert.ToInt32(RadioButtonListGoalsOptions.SelectedValue), "Last"); modalityGrid.Columns.Add(tfRealizedYearBefore); TemplateField tfRealizedYearAfter = new TemplateField(); tfRealizedYearAfter.ItemTemplate = new GridViewTemplateRealized(DataControlRowType.DataRow,
"Realizado ano atual", Convert.ToInt32(RadioButtonListGoalsOptions.SelectedValue), "Actual"); tfRealizedYearAfter.HeaderTemplate = new GridViewTemplateRealized(DataControlRowType.Header,
"Realizado ano atual", Convert.ToInt32(RadioButtonListGoalsOptions.SelectedValue), "Actual"); modalityGrid.Columns.Add(tfRealizedYearAfter); TemplateField tfMeta = new TemplateField(); tfMeta.ItemTemplate = new GridViewTemplateText(DataControlRowType.DataRow, "Meta"); tfMeta.HeaderTemplate = new GridViewTemplateText(DataControlRowType.Header, "Meta"); modalityGrid.Columns.Add(tfMeta); modalityGrid.DataSource = rows; modalityGrid.DataBind(); modalityGrid.Rows[0].Cells[0].Attributes.Add("rowspan", listPeriods.Count().ToString()); modalityGrid.Rows[0].Cells[0].HorizontalAlign = HorizontalAlign.Center; modalityGrid.Rows[0].Cells[0].VerticalAlign = VerticalAlign.Middle; for (int i = 1; i < modalityGrid.Rows.Count; i++) modalityGrid.Rows[i].Cells[0].Visible = false; gridsView.Add(modalityGrid); }); PanelGridsPeriodsModalities.Controls.Clear(); gridsView.ForEach(gridView => PanelGridsPeriodsModalities.Controls.Add(gridView)); LiteralGoals.Visible = false; } catch (Exception ex) { } }

Every time I chage my selections its all good with generating the table and its fields, but my PanelGridsPeriodsModalities(Panel that holds my grids) is always empty, and i don't know how to get the older values.

Is there anything I'm doing wrong? Anything I could do to get it?

Thanks in advance.

Victor.


Viewing all articles
Browse latest Browse all 5678

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>