在Windows窗体应用程序中,从数据访问类中的DataTable绘制图形

本文关键字:DataTable 图形 绘制 访问 窗体 Windows 应用程序 数据 | 更新日期: 2023-09-27 18:20:35

我做了一些研究,并设法找到了有关绘制图形的信息,在该图形中,您可以硬编码具有固定值的数据表。

这是链接:如何使用数据表创建图表

然而,我的问题是;

我没有这样的数据表。我有DataAccess类,它从数据库中调用数据,然后将其存储在数据表中;

public DataTable select_top_sheep(string farmerid)
    {
        dt = new DataTable();
        try
        {
            conn.Open();
            SqlCommand cmd = 
                        new SqlCommand("SELECT TOP 10 
                                         S.SheepID
                                        ,W.Weight 
                                  FROM[Farmstat_V1.0].[dbo].[Sheep] S
                                  INNER JOIN[Farmstat_V1.0].[dbo].[Weight] W 
                                    ON S.SheepID = W.SheepID 
                                  WHERE S.FarmerID = '" + farmerid + "' 
                                  ORDER BY W.Weight DESC", conn);
            SqlDataReader reader = cmd.ExecuteReader();
            dt.Load(reader);
        }
        catch (Exception)
        {
            throw;
        }
        finally
        {
            conn.Close();
        }
        return dt;
    }

然后在我的表单上,我调用这个方法来获取数据,但我如何在图中显示它?当我在调试模式下运行程序时,我可以看到数据成功地存储在DataTable中。

我只想使用工具箱中的基本图表工具以图形方式显示数据。

在Windows窗体应用程序中,从数据访问类中的DataTable绘制图形

我使用问题中提供的链接找到了答案。

这就是我所做的;

protected void Page_Load(object sender, EventArgs e)
{
    // Initializes a new instance of the DataAccess class 
    DataAccess da = new DataAccess();
    // The styling of the graph
    chart1.Series["Series1"].ChartType = SeriesChartType.Column;
    chart1.Series["Series1"].IsValueShownAsLabel = true;
    // The required lines for getting the data from the method in the DataAccess
    chart1.DataSource = da.select_top_sheep(farmerID);
    chart1.Series["Series1"].XValueMember = "SheepID";
    chart1.Series["Series1"].YValueMembers = "Weight";
    chart1.DataBind();
}

只需在谷歌上搜索即可:图表样本

    public void SampleCode()
    {
        // some code
        foreach (DataRow row in myDataSet.Tables["Query"].Rows)
        {
            // For each Row add a new series
            string seriesName = row["SalesRep"].ToString();
            Chart1.Series.Add(seriesName);
            Chart1.Series[seriesName].ChartType = SeriesChartType.Line;
            Chart1.Series[seriesName].BorderWidth = 2;
            for (int colIndex = 1; colIndex < myDataSet.Tables["Query"].Columns.Count; colIndex++)
            {
                // For each column (column 1 and onward) add the value as a point
                string columnName = myDataSet.Tables["Query"].Columns[colIndex].ColumnName;
                int YVal = (int)row[columnName];
                Chart1.Series[seriesName].Points.AddXY(columnName, YVal);
            }
        }
        DataGrid.DataSource = myDataSet;
        DataGrid.DataBind();
    }