|
|
|
ASP.Net สอบถามเรื่อง การเปลี่ยนกราฟตาม DropDownList MS Chart C# |
|
|
|
|
|
|
|
คือตอนนี้กำลังทำ chart ที่มีดาต้าเบสมาจาก access อ่ะค่ะ คือโดยปกติแล้ว MS chart ถ้าทำในส่วนของ .aspx แค่ click ด้านขวาที่มุมกราฟก็สามารถเลือก serie จาก access ได้แล้ว ซึ่งไม่จำเป็นต้องมากำหนดค่าอะไรอีกในส่วนของ cs แต่ที่อยากจะทำก็คือ เมื่อเลือก dropdownlist กราฟจะสามารถเปลี่ยนไปตามที่เราเลือก
ตัวอย่างเช่น กราฟที่แสดงอยู่เป็นกราฟระว่าง รายการ กับ จำนวนสินค้า เมื่อเราเลือก dropdownlist กราฟอาจจะสามารถเปลี่ยน เป็นกราฟระหว่าง รายการ กับ ราคาสินค้าซึ่งตรงนี้คิดไม่ออกจริงๆค่ะว่าต้องทำยังไง
ปล.
1. คือพึ่งเริ่มทำ c# อ่าค่ะ เลยไม่แน่ใจว่าปกติแล้วถ้าในส่วน MS chart แค่กำหนด serie ตรง .aspx ก็เสร็จได้เลยรึเปล่าค่ะคือลอง run ดูแล้วมันก็โชว์ได้ตามปกติโดยที่ไม่ต้องไปกำหนดค่าทีละตัวใน .cs
2.แล้วในส่วนของ chart เปลี่ยน ตาม dropdownlist ควรจะทำยังไงค่ะ
อันนี้เป็นโค้ดที่เราคิดไว้โดยคร่าวๆค่ะ
Code (C#)
public partial class WebForm1 : System.Web.UI.Page
{
OleDbConnection conObj = new OleDbConnection();
OleDbDataAdapter da;
DataSet ds = new DataSet();
protected void Page_Load(object sender, EventArgs e)
{
}
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
Chart1.Visible = DropDownList1.SelectedValue != "";
string query = string.Format("select employeeNormal, from list orders group by shipcity", DropDownList1.SelectedValue);
DataTable dt = GetData(query);
string[] x = new string[dt.Rows.Count];
int[] y = new int[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]);
}
Chart1.Series[0].Points.DataBindXY(x, y);
Chart1.Series[0].ChartType = SeriesChartType.Pie;
Chart1.ChartAreas["ChartArea1"].Area3DStyle.Enable3D = true;
Chart1.Legends[0].Enabled = true;
}
protected void DropDownList2_SelectedIndexChanged(object sender, EventArgs e)
{
}
protected void BuildChart()
{
var ddl3Value = DropDownList1.SelectedValue;
var ddl2Value = DropDownList2.SelectedValue;
if(ddl3Value != null && ddl2Value != null)
{
string strCon = "";
strCon = "";
string strPath = System.IO.Directory.GetCurrentDirectory(); // อ่านพาธที่อยู่ของแอพพลิเคชัน
strCon = "Provider=Microsoft.ACE.OLEDB.12.0;"
+ "Data Source=" + strPath + "\\Database1.accdb;"
+ "Persist Security Info=False;"; //กำหนดรูปแบบการติดต่ิกับฐานข้อมูล
if (conObj.State == ConnectionState.Open) //ตรวจสอบการติดต่อกับฐานข้อมูลว่าเปิดอยู่หรือไม่
{
conObj.Close(); // ถ้าค้างไว้ให้ปิดก่อน
}
else
{
conObj.ConnectionString = strCon; //กำหนดส่วนติดต่ิกับฐานข้อมูล
conObj.Open(); // เปิดการเชื่อมต่อข้อมูล
}
string strSQL = "SELECT employee.* FROM list;"; //กำหนดการดึงข้อมูลที่ต้องการด้วยคำสั่ง SQL
// string strSQL = "SELECT Customers.*, Customers.ID FROM Customers WHERE (((Customers.ID)=17));";
da = new OleDbDataAdapter(strSQL, conObj); // เริ่มดึงข้อมูลด้วยออบเจ็กต์ DataAdapter
// เติมข้อมูลลงไปในออบเจ็กต์ DataSet
ds.Tables.Clear(); // เคลียร์ข้อมูลใน DataSet กรณีที่มีข้อมูลเดิมอยู่
da.Fill(ds, "MyQuery"); // เราสามารถตั้งชื่อส่วนที่ Fill เข้าไปได้ตามใจชอบ
//GridView1.DataSource = ds.Tables["MyQuery"]; //แสดงข้อมูลใน DataGridView
}
}
protected void DropDownList2_SelectedIndexChanged1(object sender, EventArgs e)
{
}
private static DataTable GetData(string query)
{
DataTable dt = new DataTable();
SqlCommand cmd = new SqlCommand(query);
String constr = ConfigurationManager.ConnectionStrings["ConString"].ConnectionString;
SqlConnection con = new SqlConnection(constr);
SqlDataAdapter sda = new SqlDataAdapter();
cmd.CommandType = CommandType.Text;
cmd.Connection = con;
sda.SelectCommand = cmd;
sda.Fill(dt);
return dt;
}
}
Tag : ASP.NET Ms Access, C#
|
|
|
|
|
|
Date :
2014-04-22 15:06:40 |
By :
thhancha |
View :
1626 |
Reply :
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ปกติแล้วทำในส่วของ Event SelectedIndexChanged ก็น่าจะได้แล้วครับ อยากได้เงื่อนไขอะไรก็ใช้พวก if เอาครับ หรือไม่ขอภาพประกอบหน่อยครับ
|
|
|
|
|
Date :
2014-04-23 09:37:05 |
By :
mr.win |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 00
|