asp.net Repeater嵌套Chartlet,页面图表重复的现象
最近做了一个数据统计的项目,我选择的是第三方控件Chartlet,这个控件很好用,而且是免费的!
其中项目中有有一个多财年数据对比的功能,我采用的是每财年一个图表来进行对比。
用的Repeater来循环Chartlet控件,但是出现了一个问题,循环后在页面显示的图表一样,也就是重复的,
经过很长时间的验证,最后发现运行页面后,打开源文件chartlet的id是一样的,这个是造成了重复现象的出现,我的解决方案是:在后台重新定义id
前台:
1 <%@ Register Assembly="Chartlet" Namespace="FanG" TagPrefix="cc1" %> // Chartlet控件的引用 2 3 <div style="float: left; width: 840px; min-height: 350px; margin-top: 1px"> 4 <asp:Repeater ID="Repeater1" runat="server" OnItemDataBound="Repeater1_ItemDataBound"> 5 <ItemTemplate> 6 <cc1:Chartlet ID="Chartlet1" runat="server" Height="350px" Width="835px" /> 7 </ItemTemplate> 8 </asp:Repeater> 9 10 </div>
后台:
1 private int allNum = 0; 2 /// <summary> 3 /// Repeater触发事件 4 /// 数据绑定 5 /// </summary> 6 /// <param name="sender"></param> 7 /// <param name="e"></param> 8 protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e) 9 { 10 var enYearSolveTimes = this.Repeater1.DataSource as IList<EnYearSolveTime>; 11 var chartlet = e.Item.FindControl("Chartlet1") as Chartlet; 12 if (enYearSolveTimes == null || chartlet == null) return; 13 try 14 { 15 IList<EnSolveTime> enSolveTimes = enYearSolveTimes[allNum].EnSolveTimeList; 16 DataSet ds = MsgHelper.EnSolveTimeListToDataSet(enSolveTimes); 17 setProblemChartlet(ds, chartlet, enYearSolveTimes[allNum].Year); 18 allNum++; 19 if (allNum == enYearSolveTimes.Count) 20 allNum = 0; 21 } 22 catch (Exception ex) 23 { 24 log.Error(MsgHelper.RecordErrorIntoLog(ex)); 25 } 26 } 27 28 #region 图表显示 29 30 //绑定数据 31 32 private void setProblemChartlet(DataSet ds, Chartlet chartlet1, int year) 33 34 { 35 chartlet1.ID = "Chartlet1" + year; //重新赋值ID,如果没有这一步这会出现重复的现象 37 38 chartlet1.AppearanceStyle = FanG.Chartlet.AppearanceStyles.Bar_2D_Breeze_NoCrystal_Glow_NoBorder; /*选择外观基调*/ 39 40 chartlet1.Shadow.Enable = false; 41 42 chartlet1.ChartTitle.Text = year + "财年总体分布-趋势图"; //图表标题 43 44 chartlet1.Crystal.Enable = true; 45 46 chartlet1.YLabels.UnitText = "工作日"; 47 48 chartlet1.XLabels.UnitText = "月份"; 49 50 chartlet1.ColorGuider = new FanG.Attributes(true, Color.Black, Color.White, new Font("Arial", 6)); 51 52 chartlet1.BindChartData(ds.Tables[0]); 53 54 }
浙公网安备 33010602011771号