"> نمودار میله ای با استفاده از Ajax در ASP.NET

نمودار میله ای با استفاده از Ajax در ASP.NET

نمودار میله ای

در این مقاله نشان می دهیم که چگونه یک نمودار میله ای Ajax Control Toolkit  را پیاده سازی کرده و به صورت داینامیک از SQL Server Database پر کنیم.

دیتابیس

 

در این مقاله از دیتابیس Northwind مایکروسافت استفاده کردیم که می توانید آن را از لینک زیر دانلود نمایید.

نمودار میله ای

لینک دیتابیس

استفاده از کنترل ASP.Net AJAX Bar Chart

  1. کنترل ToolScriptManager را انتخاب کرده و روی صفحه می اندازیم.
  2. بعد از اضافه کردن رفرنس کتابخانه AJAX Control Toolkit، آن را به صورت زیر Register می کنیم.

<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit"TagPrefix="cc1" %>

 

کد HTML:

ای کد بسیار ساده است و شامل یک DropDownList و یک Control Toolkit Bar Chart می باشد.


<cc1:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server">

</cc1:ToolkitScriptManager>

<asp:DropDownList ID="ddlCountries" runat="server" OnSelectedIndexChanged="ddlCountries_SelectedIndexChanged"

AutoPostBack="true">

</asp:DropDownList>

<hr />

<cc1:BarChart ID="BarChart1" runat="server" ChartHeight="300" ChartWidth = "450"

ChartType="Column" ChartTitleColor="#0E426C" Visible = "false"

CategoryAxisLineColor="#D08AD9" ValueAxisLineColor="#D08AD9" BaseLineColor="#A156AB">

</cc1:BarChart>

بر اساس انتخاب DropDownList نمودار میله ای به صورت داینامیک از دیتابیس پر می شود.

فضاهای نام:

فضای نام های زیر باید به برنامه اضافه شود:

C#:


using System.Data;

using System.Data.SqlClient;

using System.Configuration;

VB.NET:


Imports System.Data

Imports System.Data.SqlClient

Imports System.Configuration

پرکردن DropDownList و نمودار  میله ای

در رویداد Page Load، DropDownList را از دیتابیس Northwind با لیستی از کشورها پر کردیم که سفارشات به آن ها ارسال می شود.

سپس در رویداد SelectedIndexChanged مربوط به DropDownList داده های آماری وارد کردیم که به طور مثال در کدام شهر از کشور انتخاب شده، سفارشات توزیع می شوند.

این اطلاعات آماری به عنوان نمودار میله ای نمایش داده می شوند که محور نمودار شهرهای کشور انتخاب شده می باشند که مقدار سفارشات هر شهر را نشان می دهند.

C#:


protected void Page_Load(object sender, EventArgs e)

{

if (!IsPostBack)

{

string query = "select distinct shipcountry from orders";

DataTable dt = GetData(query);

ddlCountries.DataSource = dt;

ddlCountries.DataTextField = "shipcountry";

ddlCountries.DataValueField = "shipcountry";

ddlCountries.DataBind();

ddlCountries.Items.Insert(0, new ListItem("Select", ""));

}

}

protected void ddlCountries_SelectedIndexChanged(object sender, EventArgs e)

{

string query = string.Format("select shipcity, count(orderid) from orders where shipcountry = '{0}' group by shipcity", ddlCountries.SelectedItem.Value);

DataTable dt = GetData(query);

&nbsp;

string[] x = new string[dt.Rows.Count];

decimal[] y = new decimal[dt.Rows.Count];

for (int i = 0; i < dt.Rows.Count; i++)

{

x[i] = dt.Rows[i][0].ToString();

y[i] = Convert.ToInt32(dt.Rows[i][1]);

}

BarChart1.Series.Add(new AjaxControlToolkit.BarChartSeries { Data = y });

BarChart1.CategoriesAxis = string.Join(",", x);

BarChart1.ChartTitle = string.Format("{0} Order Distribution", ddlCountries.SelectedItem.Value);

if (x.Length > 3)

{

BarChart1.ChartWidth = (x.Length * 100).ToString();

}

BarChart1.Visible = ddlCountries.SelectedItem.Value != "";

}

&nbsp;

private static DataTable GetData(string query)

{

DataTable dt = new DataTable();

string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;

using (SqlConnection con = new SqlConnection(constr))

{

using (SqlCommand cmd = new SqlCommand(query))

{

using (SqlDataAdapter sda = new SqlDataAdapter())

{

cmd.CommandType = CommandType.Text;

cmd.Connection = con;

sda.SelectCommand = cmd;

sda.Fill(dt);

}

}

return dt;

}

}

VB.Net:


Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load

If Not IsPostBack Then

Dim query As String = "select distinct shipcountry from orders"

Dim dt As DataTable = GetData(query)

ddlCountries.DataSource = dt

ddlCountries.DataTextField = "shipcountry"

ddlCountries.DataValueField = "shipcountry"

ddlCountries.DataBind()

ddlCountries.Items.Insert(0, New ListItem("Select", ""))

End If

End Sub

Protected Sub ddlCountries_SelectedIndexChanged(sender As Object, e As EventArgs)

Dim query As String = String.Format("select shipcity, count(orderid) from orders where shipcountry = '{0}' group by shipcity", ddlCountries.SelectedItem.Value)

Dim dt As DataTable = GetData(query)

&nbsp;

Dim x As String() = New String(dt.Rows.Count - 1) {}

Dim y As Decimal() = New Decimal(dt.Rows.Count - 1) {}

For i As Integer = ۰ To dt.Rows.Count - 1

x(i) = dt.Rows(i)(0).ToString()

y(i) = Convert.ToInt32(dt.Rows(i)(1))

Next

BarChart1.Series.Add(New AjaxControlToolkit.BarChartSeries() With { _

.Data = y _

})

BarChart1.CategoriesAxis = String.Join(",", x)

BarChart1.ChartTitle = String.Format("{0} Order Distribution", ddlCountries.SelectedItem.Value)

If x.Length > 3 Then

BarChart1.ChartWidth = (x.Length * 100).ToString()

End If

BarChart1.Visible = ddlCountries.SelectedItem.Value <> ""

End Sub

&nbsp;

Private Shared Function GetData(query As String) As DataTable

Dim dt As New DataTable()

Dim constr As String = ConfigurationManager.ConnectionStrings("constr").ConnectionString

Using con As New SqlConnection(constr)

Using cmd As New SqlCommand(query)

Using sda As New SqlDataAdapter()

cmd.CommandType = CommandType.Text

cmd.Connection = con

sda.SelectCommand = cmd

sda.Fill(dt)

End Using

End Using

Return dt

End Using

End Function

فاطمه زکایی

فاطمه زکایی هستم. فارغ التحصیل کارشناسی مهندسی نرم افزار، مدت سه سال هست که در زمینه توسعه اپلیکیشن های تحت وب و اندروید و همچنین تولید محتوای تخصصی برنامه نویسی تحت وب و اندروید در مجموعه mspsoft در خدمت شما هستم.

نوشته‌های مرتبط

دیدگاه‌ها

*
*

این سایت از اکیسمت برای کاهش هرزنامه استفاده می کند. بیاموزید که چگونه اطلاعات دیدگاه های شما پردازش می‌شوند.