回发后问题JuiceUI滑块控件

时间:2013-05-28 16:25:44

标签: asp.net slider controls postback juice-ui

我使用Denis Bauer的DynamicControlsPlaceholder在回发后保存动态控件的视图状态。 我之前在项目的早期部分使用了DynamicControlsPlaceholder,它运行得很完美。

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

Before PostBack

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

After PostBack

我对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();
            }

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

1 个答案:

答案 0 :(得分:0)

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

如果您遇到Juice UI问题,可以使用它的堂兄Brew