Create Custom Chart Web Part in SharePoint 2010

Posted By:jayasankarkesarla       Posted Date: November 18, 2013    Points: 200    Category: SharePoint    URL: http://www.emanonlabs.in/


In this article I am exploring custom chart web part in SharePoint.
SharePoint Cascading LookApp  SharePoint Mobile Extensions


Introduction:
  In this article I am exploring custom chart web part in SharePoint.
Reporting is an important part of any project. Sometime client required to display the record in a visual format.so we need to display record in any visual format like chart web part or other
For displaying a list record in chart format please follow below steps. 
1.create a list with numeral values like below
2.      Add the following references to your web.config in their respective locations:
01<SafeControls>
02 
03 
04<SafeControl Assembly="System.Web.DataVisualization, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" Namespace="System.Web.UI.DataVisualization.Charting" TypeName="*" Safe="True" />
05 
06<system.web>
07 
08 
09<httpHandlers>
10 
11        <add path="ChartImg.axd" verb="GET,HEAD,POST" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false" />
12 
13          </httpHandlers>
14 
15  
16 
17 <appSettings>
18 
19 
20<add key="ChartImageHandler" value="storage=file;timeout=60;"/>
21 
22 
23 <system.webServer>
24 <handlers>
25 
26 
27<add name="ChartImageHandler" preCondition="integratedMode" verb="GET,HEAD,POST" path="ChartImg.axd" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />

3.      Add the below code in in cs file :

001<font color="#000000">using System.Data;
002 
003using System.Linq;
004 
005using System.Web.UI;
006 
007using Microsoft.SharePoint;
008 
009using System.Web.UI.DataVisualization.Charting;
010 
011namespace SPChartWp.ChartWp
012 
013{
014 
015    public partial class ChartWpUserControl : UserControl
016 
017    {
018 
019        DataView dv;
020 
021        protected void Page_Load(object sender, EventArgs e)
022 
023        {
024 
025            try
026 
027            {
028 
029                SPSecurity.RunWithElevatedPrivileges(delegate()
030 
031                {
032 
033                    using (SPSite oSite = new SPSite(SPContext.Current.Site.Url))
034 
035                    {
036 
037                        using (SPWeb oWeb = oSite.OpenWeb())
038 
039                        {
040 
041                            SPListCollection oListCollection = oWeb.Lists;
042 
043  
044 
045                            SPList oList = oWeb.Lists["Tracker"];
046 
047  
048 
049                            SPListItemCollection oItems = oList.GetItems();
050 
051  
052 
053                            DataTable dtMain = ConvertSPListToDataTable(oItems);
054 
055  
056 
057                            var dtNkdkdew = (from r in dtMain.AsEnumerable()
058 
059                                             select r).Distinct();
060 
061                            DataTable resulttbl = new DataTable();
062 
063  
064 
065                            IEnumerable<string> DistinRRMasterID = new List<string>();
066 
067                            DistinRRMasterID = (from results in dtMain.AsEnumerable()
068 
069                                                select (string)results["Role"]).Distinct();
070 
071  
072 
073                            //Create DataTable
074 
075                            DataTable returnDt = new DataTable();
076 
077                            DataRow oRow = returnDt.NewRow();
078 
079                            string[] ColumnsArr = { "Role", "Number Postions", "In Progress", "On Hold", "L1 Scheduled", "L2 Scheduled", "HR Scheduled","?Offer Released" };
080 
081                            int noOfColumns = ColumnsArr.Length;
082 
083                            for (int cntr = 0; cntr < noOfColumns; cntr++)
084 
085                            {
086 
087                                DataColumn column = new DataColumn();
088 
089                                column.ColumnName = ColumnsArr[cntr];
090 
091                                column.DataType = typeof(string);
092 
093                                returnDt.Columns.Add(column);
094 
095                            }
096 
097  
098 
099                            foreach (var rrRole in DistinRRMasterID)
100 
101                            {
102 
103  
104 
105  
106 
107                                var rrInProgressCnt = (from r in dtMain.AsEnumerable()
108 
109                                                       where (r.Field<string>("Role") == rrRole
110 
111                                                       && r.Field<string>("Requirement Status") == "In Progress")
112 
113                                                       select r).Count();
114 
115                                
116 
117                                var OnHoldCnt = (from r in dtMain.AsEnumerable()
118 
119                                                 where (r.Field<string>("Role") == rrRole
120 
121                                                 && r.Field<string>("Requirement Status") == "On Hold")
122 
123                                                 select r).Count();
124 
125                                var L1RoundCnt = (from r in dtMain.AsEnumerable()
126 
127                                                  where (r.Field<string>("Role") == rrRole
128 
129                                                  && r.Field<string>("Requirement Status") == "L1 Round")
130 
131                                                  select r).Count();
132 
133                                var L2RoundCnt = (from r in dtMain.AsEnumerable()
134 
135                                                 where (r.Field<string>("Role") == rrRole
136 
137                                                 && r.Field<string>("Requirement Status") == "L2 Round")
138 
139                                                 select r).Count();
140 
141                                var HRRoundCnt = (from r in dtMain.AsEnumerable()
142 
143                                                  where (r.Field<string>("Role") == rrRole
144 
145                                                  && r.Field<string>("Requirement Status") == "HR Round")
146 
147                                                  select r).Count();
148 
149  
150 
151                                var OfferReleasedCnt = (from r in dtMain.AsEnumerable()
152 
153                                                        where (r.Field<string>("Role") == rrRole
154 
155                                                        && r.Field<string>("Requirement Status") == "Offer Released")
156 
157                                                        select r).Count();
158 
159       
160 
161                                var MainColl = (from r in dtMain.AsEnumerable()
162 
163                                                where (r.Field<string>("Role") == rrRole)
164 
165                                                select r);
166 
167  
168 
169                                #region Bind Fields datatable
170 
171                                //Add Data to row
172 
173                                //Create DataTable Rows
174 
175                                oRow = returnDt.NewRow();
176 
177                                var item = MainColl.FirstOrDefault();
178 
179                                oRow["Role"] = rrRole;
180 
181                                oRow["Number Postions"] = item["NmberOfPostion"];
182 
183                                oRow["In Progress"] = rrInProgressCnt;
184 
185                                oRow["On Hold"] = OnHoldCnt;
186 
187                                oRow["L1 Scheduled"] = L1RoundCnt;
188 
189                                oRow["L2 Scheduled"] = L2RoundCnt;
190 
191                                oRow["HR Scheduled"] = HRRoundCnt;
192 
193                                oRow["?Offer Released"] = OfferReleasedCnt;
194 
195  
196 
197                                returnDt.Rows.Add(oRow);
198 
199                                #endregion
200 
201                            }
202 
203  
204 
205                            Chart1.ChartAreas["ChartArea1"].AxisY.Title = "Number Postions";
206 
207                            Chart1.ChartAreas["ChartArea1"].AxisX.Title = "Role";
208 
209                            Chart1.DataSource = returnDt;
210 
211                            Chart1.DataBind();
212 
213                            dv = new DataView(returnDt);
214 
215                            dv.Sort = "Role ASC";
216 
217                            //Bind Data to Grid
218 
219                            GridView1.DataSource = dv;
220 
221                            GridView1.PagerTemplate = null;
222 
223                            GridView1.DataBind();
224 
225  
226 
227                        }
228 
229                    }
230 
231                });
232 
233            }
234 
235            catch (Exception ex)
236 
237            {
238 
239                Response.Write(ex.Message);
240 
241            }
242 
243  
244 
245        }
246 
247        private static DataTable ConvertSPListToDataTable(SPListItemCollection spItemCollection)
248 
249        {
250 
251            DataTable dt = new DataTable();
252 
253  
254 
255            try
256 
257            {
258 
259                dt = spItemCollection.GetDataTable();
260 
261                foreach (DataColumn c in dt.Columns)
262 
263                    c.ColumnName = System.Xml.XmlConvert.DecodeName(c.ColumnName);
264 
265                return (dt);
266 
267  
268 
269            }
270 
271            catch
272 
273            {
274 
275                return (dt);
276 
277            }
278 
279        }
280 
281    }
282 
283}
284 
285</font>
4.Web part will be display as below

Comments