1

IDSeverityの2 つの列があり、どちらもデータベース テーブルにデータ型 string があり、Severity 列には High、Medium、Low の値があります。Chart コントロールを追加し、SQL データ ソースを使用してそのデータを指定しましたが、Y 座標値は整数型でなければならないため、出力を取得できません。以下のようなチャートを生成し、すべての重大度レベルにパーセンテージ値を付ける必要があります。

重大度チャート

コード:

    private void GetChartData()
        {
            string cs = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
            DataTable dt = new DataTable();
            using (SqlConnection con = new SqlConnection(cs))
            {
                con.Open();
                SqlCommand cmd = new SqlCommand("SELECT ID, Severity FROM AMD", con);
                SqlDataAdapter da = new SqlDataAdapter(cmd);
                da.Fill(dt);
                con.Close();
            }

            Chart1.Series[0].XValueMember = "Severity";
            Chart1.Series[0].YValueMembers = "ID";
            Chart1.Series[0].ChartArea = "ChartArea1";   
            Chart1.DataSource = dt;
            Chart1.DataBind();


            int high = 0, med = 0, low = 0;
            string[] x = new string[dt.Rows.Count];
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                x[i] = dt.Rows[i][0].ToString();
                //y[i] = dt.Rows[i][1].ToString();
                if (dt.Rows[i][1].ToString().ToLower().Contains("high"))
                {
                    high++;
                }

                else if (dt.Rows[i][1].ToString().ToLower().Contains("medium"))
                {
                    med++;
                }

                else if (dt.Rows[i][1].ToString().ToLower().Contains("low"))
                {
                    low++;
                }


            Chart1.Series[1].Points.DataBindXY(x, high);
    }
}

これを達成するにはどうすればよいですか?ご案内ください...よろしくお願いします...

4

2 に答える 2

0

これを試すことができなくても、私は推測します:

//SqlCommand cmd = new SqlCommand("SELECT ID, Severity FROM AMD", con);
  SqlCommand cmd = new SqlCommand("SELECT Severity, Count(*) AS ItemCount FROM AMD GROUP BY Severity", con);

そして、次のようなもの

Chart1.Series[0].XValueMember = "Severity";
Chart1.Series[0].YValueMembers = "ItemCount";
于 2016-03-18T10:47:51.297 に答える