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         }

 

posted @ 2013-08-27 12:32  碎梦沉浮  阅读(227)  评论(0)    收藏  举报