نمودارهای قطبی و راداری در ASP.Net
پنجشنبه 16 مهر 1394در اینجا قصد داریم با نمودارهای Polar و Radar در ASP.Net آشنا شویم . نمودارهای ASP.Net کنترل های قدرتمندی برای ساختن نمودارهای تعاملی هستند . در این قسمت ما نمودارهای قطبی (polar) و رادار رو مورد بحث قرار دادیم . و نمونه هایی از اینگونه نمودارها را ایجاد خواهیم کرد .
در ابتدا خاصیت های این نمودارها را بررسی میکنیم . نمودارهای قطبی و راداری دارای خصوصیات مشترک زیر هستند .
AlternetText : تنظیم توضیحات درباره تصویر هنگامی که تصویر در دسترس نیست
Annotation : حاشیه نویسی نمودارها
AntiAliasing : تنظیم یک مقدار که تعیین میکند از چه anti-Aliasing استفاده شده است زمانی که متن و تصویر در حال کشیده شدن هستند .
BackGradientStyle : تنظیم سایه روشن پس زمینه
Backcolor : تنظیم رنگ نمودار
BackImage : تنظیم تصویر پس زمینه
BackHatchStyle : سایه دار شدن رنگ زمینه
Height : تنظیم ارتفاع نمودار
Width : تنظیم عرض نمودار
Palette : تنظیم سبک نمودار
PaletteCustomColors : تنظیم رنگ کنترل نمودار
Series : تنظیم سری نمودار
توضیحات رو با یک مثال عملی و ساخت یک نمونه کامل میکنیم .
قدم اول
در بانک اطلاعاتی یک جدول ایجاد میکنیم و داده ها را به آن اضافه میکنیم .
SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO CREATE TABLE [dbo].[orderdet]( [id] [int] IDENTITY(1,1) NOT NULL, [Month] [varchar](50) NULL, [Orders] [int] NULL, CONSTRAINT [PK_Order Table] PRIMARY KEY CLUSTERED ( [id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO SET ANSI_PADDING OFF GO SET IDENTITY_INSERT [dbo].[orderdet] ON GO INSERT [dbo].[orderdet] ([id], [Month], [Orders]) VALUES (1, N'Jan', 0) GO INSERT [dbo].[orderdet] ([id], [Month], [Orders]) VALUES (2, N'Feb', 5) GO INSERT [dbo].[orderdet] ([id], [Month], [Orders]) VALUES (3, N'March', 20) GO INSERT [dbo].[orderdet] ([id], [Month], [Orders]) VALUES (4, N'April', 40) GO INSERT [dbo].[orderdet] ([id], [Month], [Orders]) VALUES (5, N'May', 15) GO INSERT [dbo].[orderdet] ([id], [Month], [Orders]) VALUES (6, N'Jun', 60) GO INSERT [dbo].[orderdet] ([id], [Month], [Orders]) VALUES (7, N'July', 75) GO INSERT [dbo].[orderdet] ([id], [Month], [Orders]) VALUES (8, N'Aug', 80) GO INSERT [dbo].[orderdet] ([id], [Month], [Orders]) VALUES (9, N'Sep', 85) GO INSERT [dbo].[orderdet] ([id], [Month], [Orders]) VALUES (10, N'Oct', 100) GO INSERT [dbo].[orderdet] ([id], [Month], [Orders]) VALUES (11, N'Nov', 2) GO INSERT [dbo].[orderdet] ([id], [Month], [Orders]) VALUES (12, N'Dec', 90) GO SET IDENTITY_INSERT [dbo].[orderdet] OFF Go
بعد از ایجاد جدول و اجرای آن ، رکوردهای جدول به صورت زیر خواهد بود .
قدم دوم
برای دیتابیس پروسیجری برای واکشی اطلاعات به صورت زیر ایجاد میکنیم .
Create procedure [dbo].[GetCharData] ( @id int =null ) as begin Select Month,Orders from Orderdet End
قدم سوم
یک Web Application ایجاد میکنیم .
Microsoft Visual Studio 2010 > File > New Project > C# > Empty Website >
روی نام پروژه راست کلیک کرده و یک صفحه Default.aspx اضافه میکنیم .
کدهای زیر در این صفحه قرار دارند .
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <%@ Register Assembly="System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" Namespace="System.Web.UI.DataVisualization.Charting" TagPrefix="asp" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>Article by Vithal Wadje</title> </head> <body bgcolor="blue"> <form id="form1" runat="server"> <h4 style="color: White;"> Article for C#Corner </h4> <asp:Chart ID="Chart1" runat="server" BackColor="64, 64, 0" BackGradientStyle="LeftRight" Height="370px" Palette="None" PaletteCustomColors="Maroon" Width="370px"> <Series> <asp:Series Name="Series1" ChartType="Radar"> </asp:Series> </Series> <ChartAreas> <asp:ChartArea Name="ChartArea1" > </asp:ChartArea> </ChartAreas> <BorderSkin BackColor="" PageColor="192, 64, 0" /> </asp:Chart> </form> </body> </html>
قدم چهارم
یک متد برای اتصال کنترل نمودار ایجاد میکنیم .
صفحه default.aspx.cs را باز کرده و یک تابع با نام Bindchart ایجاد میکنیم .
private void Bindchart() { connection(); query = "select *from Orderdet";//not recommended this i have written just for example,write stored procedure for security com = new SqlCommand(query, con); SqlDataAdapter da = new SqlDataAdapter(query, con); DataSet ds = new DataSet(); da.Fill(ds); DataTable ChartData=ds.Tables[0]; //storing total rows count to loop on each Record string[] XPointMember = new string[ChartData.Rows.Count]; int[] YPointMember = new int[ChartData.Rows.Count]; for (int count = 0; count < ChartData.Rows.Count;count++ ) { //storing Values for X axis XPointMember[count] = ChartData.Rows[count]["Month"].ToString(); //storing values for Y Axis YPointMember[count] = Convert.ToInt32(ChartData.Rows[count]["Orders"]); } //binding chart control Chart1.Series[0].Points.DataBindXY(XPointMember, YPointMember); //Setting width of line Chart1.Series[0].BorderWidth = 2; //setting Chart type // Chart1.Series[0].ChartType = SeriesChartType.Polar ; Chart1.Series[0].ChartType = SeriesChartType.Radar; // Chart1.ChartAreas["ChartArea1"].AxisX.MajorGrid.Enabled = false; //Chart1.ChartAreas["ChartArea1"].AxisY.MajorGrid.Enabled = false; //Chart1.ChartAreas["ChartArea1"].Area3DStyle.Enable3D = true; con.Close(); }
تابع را در PageLoad صدا می زنیم .
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { Bindchart(); } }
صفحه default.aspx.cs به صورت زیر ظاهر می شود .
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data.SqlClient; using System.Configuration; using System.Data; using System.Web.UI.DataVisualization.Charting; public partial class _Default : System.Web.UI.Page { private SqlConnection con; private SqlCommand com; private string constr, query; private void connection() { constr = ConfigurationManager.ConnectionStrings["getconn"].ToString(); con = new SqlConnection(constr); con.Open(); } protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { Bindchart(); } } private void Bindchart() { connection(); query = "select *from Orderdet";//not recommended this i have written just for example,write stored procedure for security com = new SqlCommand(query, con); SqlDataAdapter da = new SqlDataAdapter(query, con); DataSet ds = new DataSet(); da.Fill(ds); DataTable ChartData=ds.Tables[0]; //storing total rows count to loop on each Record string[] XPointMember = new string[ChartData.Rows.Count]; int[] YPointMember = new int[ChartData.Rows.Count]; for (int count = 0; count < ChartData.Rows.Count;count++ ) { //storing Values for X axis XPointMember[count] = ChartData.Rows[count]["Month"].ToString(); //storing values for Y Axis YPointMember[count] = Convert.ToInt32(ChartData.Rows[count]["Orders"]); } //binding chart control Chart1.Series[0].Points.DataBindXY(XPointMember, YPointMember); //Setting width of line Chart1.Series[0].BorderWidth = 2; //setting Chart type // Chart1.Series[0].ChartType = SeriesChartType.Polar ; Chart1.Series[0].ChartType = SeriesChartType.Radar; // Chart1.ChartAreas["ChartArea1"].AxisX.MajorGrid.Enabled = false; //Chart1.ChartAreas["ChartArea1"].AxisY.MajorGrid.Enabled = false; Chart1.ChartAreas["ChartArea1"].Area3DStyle.Enable3D = true; con.Close(); } }
نمودار قطبی ساده ایجاد شد .
برای فعال کردن نمودار قطبی 3D از کد زیر استفاده میکنیم .
Chart1.ChartAreas["ChartArea1"].Area3DStyle.Enable3D = true;
برای نمودار رادار ساده از کد زیر استفاده میکنیم .
Chart1.Series[0].ChartType = SeriesChartType.Radar;
و برای نمودار رادار 3D از کد زیر استفاده میکنیم .
Chart1.ChartAreas["ChartArea1"].Area3DStyle.Enable3D = true;
نکته : در web.config ، connection string را بر اساس سرور خود تنظیم کنید .
- ASP.net
- 2k بازدید
- 2 تشکر