0

我正在使用 Denis Bauer 的 DynamicControlsPlaceholder 在回发后保存动态控件的视图状态。我之前在项目的早期部分中使用过 DynamicControlsPlaceholder,它运行良好。

然而,今天我遇到了困难。我创建了一个页面,其中有许多文本标签、滑块和文本框(由数据库中有多少元素定义),如下所示。滑块是 JuiceUI 滑块控件,文本框是普通的 ASP.NET 文本框。

回发之前

回发后,文本标签(文字控件)和饼图消失,文本框缩小(内部文本保留),滑块重置为最低值,无法移动滑块(滑块根本无法移动)。

回发后

我对 ASP.NET 很陌生,我完全不知道为什么会这样。您认为这是动态控件占位符、JuiceUI 滑块还是我的代码(见下文)的问题?

{

                SqlCeCommand cmdb = new SqlCeCommand();
                cmdb.CommandText = "SELECT CriteriaName,CriteriaDesc FROM tblCriteria WHERE (DecisionID = @DID)";
                cmdb.Parameters.AddWithValue("@DID", DID.Text.Trim());

                cmdb.Connection = sqlConnection1;
                reader = cmdb.ExecuteReader();

                string[] criterianames = new string[critno];
                string[] criteriadescs = new string[critno];

                int i = 0;

                while (reader.Read())
                {
                    criterianames[i] = reader["CriteriaName"].ToString().Trim();
                    criteriadescs[i] = reader["CriteriaDesc"].ToString().Trim();
                    i++;
                }
                reader.Close();

                Cont2.Controls.Add(new LiteralControl("<h3>Thank you for contributing to the following decision.<h4>Decision Goal: " + dgoal + "</h4><br><br><center>"));

                Series weights = new Series();
                weights.ChartType = SeriesChartType.Pie;

                double[] yBar = new double[critno];
                string[] xBar = new string[critno];

                xBar = criterianames;
                for (i = 0; i < critno; i++)
                {
                    yBar[i] = 1;
                }

                ChartArea ca = new ChartArea();

                ca.Position = new ElementPosition(0, 0, 100, 100);
                ca.InnerPlotPosition = new ElementPosition(0, 0, 100, 100);
                ca.BackColor = System.Drawing.Color.Transparent;

                Chart piechart = new Chart();
                piechart.RenderType = RenderType.ImageTag;
                piechart.ChartAreas.Add(ca);
                piechart.BackColor = System.Drawing.Color.Transparent;
                piechart.Palette= ChartColorPalette.BrightPastel;
                piechart.BorderColor = System.Drawing.Color.Black;
                piechart.BorderSkin.PageColor = System.Drawing.Color.Transparent;
                piechart.BorderSkin.BackColor = System.Drawing.Color.Transparent;

                piechart.Width = 800;
                piechart.Series.Add(weights);
                piechart.ImageStorageMode = ImageStorageMode.UseImageLocation;
                piechart.ImageLocation = "~/TempImages/ChartPic_#SEQ(300,3)";

                piechart.Series[0].Points.DataBindXY(xBar, yBar);

                piechart.DataBind();
                Cont2.Controls.Add(piechart);


                Cont2.Controls.Add(new LiteralControl("</center><h3>Please provide a weighting for each criterion.</h3><p>Please provide a weighting for each criterion along with a description of why you made this choice. </p>"));

                for (i = 0; i < critno; i++)
                {
                    Cont3.Controls.Add(new LiteralControl("<h3>" + criterianames[i] + "</h3><p><strong>Description: </strong>" + criteriadescs[i] + "</p><center>"));

                    Juice.Slider weightslider = new Juice.Slider();
                    weightslider.ID = "w" + i.ToString();
                    weightslider.Min = 1;
                    weightslider.Value = 50;
                    weightslider.Max = 100;
                    weightslider.AutoPostBack = true;
                    Cont3.Controls.Add(weightslider);
                    weightslider.ValueChanged += (o, a) =>
                    {
                        ClientScript.RegisterStartupScript(this.GetType(), "myalert", "alert('" + weightslider.Value.ToString() + "');", true);
                    };

                    TextBox wdesc = new TextBox();
                    wdesc.ID = "wd" + Convert.ToString(i);
                    wdesc.Rows = 3;
                    wdesc.Width = 900;
                    wdesc.TextMode = TextBoxMode.MultiLine;
                    Cont3.Controls.Add(wdesc);
                    Cont3.Controls.Add(new LiteralControl("</center>"));

                }
                Cont3.Controls.Add(new LiteralControl("<p align='right'>"));
                Button continue1 = new Button();
                continue1.Text = "Continue";
                Cont3.Controls.Add(continue1);
                Cont3.Controls.Add(new LiteralControl("</p>"));


                // Database Disconnect
                sqlConnection1.Close();
            }

非常感谢您提供的任何帮助,亲切的问候,理查德

4

1 回答 1

0

您可以通过创建一个仅包含 Juice UI 滑块、这些动态占位符之一和标签的页面来消除或确认 Juice UI 存在问题。那将是第一站。

如果你确实遇到了 Juice UI 的问题,你可以使用它的表弟Brew

于 2013-05-29T05:12:01.570 回答