Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>This is definitely possible and you'll be able to produce a chart that looks like this: <img src="https://i.stack.imgur.com/Su8Oe.png" alt="enter image description here"></p> <p>The following code will get what you need:</p> <p><strong>ASPX</strong></p> <pre><code> &lt;asp:Chart ID="Chart1" runat="server" Palette="SeaGreen" BackColor="LightGray" Width="654px"&gt; &lt;Series&gt; &lt;/Series&gt; &lt;ChartAreas&gt; &lt;asp:ChartArea Name="ChartArea1" AlignmentOrientation="Horizontal"&gt; &lt;/asp:ChartArea&gt; &lt;/ChartAreas&gt; &lt;/asp:Chart&gt; </code></pre> <p><strong>C#</strong></p> <pre><code> //Build Sample Data DataTable DataTable dt = new DataTable(); DataColumn dc; dc = new DataColumn(); dc.ColumnName = "Name"; dt.Columns.Add(dc); dc = new DataColumn(); dc.ColumnName = "Question"; dt.Columns.Add(dc); dt.Columns.Add("Marks", typeof(int)); string question = "2D"; DataRow dr; dr = dt.NewRow(); dr["Name"] = "Fred"; dr["Question"] = question; dr["Marks"] = 54; dt.Rows.Add(dr); dr = dt.NewRow(); dr["Name"] = "Bill"; dr["Question"] = question; dr["Marks"] = 66; dt.Rows.Add(dr); dr = dt.NewRow(); dr["Name"] = "Rhona"; dr["Question"] = question; dr["Marks"] = 32; dt.Rows.Add(dr); dr = dt.NewRow(); dr["Name"] = "Peter"; dr["Question"] = question; dr["Marks"] = 46; dt.Rows.Add(dr); question = "4D"; dr = dt.NewRow(); dr["Name"] = "Fred"; dr["Question"] = question; dr["Marks"] = 89; dt.Rows.Add(dr); dr = dt.NewRow(); dr["Name"] = "Bill"; dr["Question"] = question; dr["Marks"] = 99; dt.Rows.Add(dr); dr = dt.NewRow(); dr["Name"] = "Rhona"; dr["Question"] = question; dr["Marks"] = 28; dt.Rows.Add(dr); dr = dt.NewRow(); dr["Name"] = "Peter"; dr["Question"] = question; dr["Marks"] = 44; dt.Rows.Add(dr); question = "3D"; dr = dt.NewRow(); dr["Name"] = "Fred"; dr["Question"] = question; dr["Marks"] = 26; dt.Rows.Add(dr); dr = dt.NewRow(); dr["Name"] = "Bill"; dr["Question"] = question; dr["Marks"] = 89; dt.Rows.Add(dr); dr = dt.NewRow(); dr["Name"] = "Rhona"; dr["Question"] = question; dr["Marks"] = 73; dt.Rows.Add(dr); dr = dt.NewRow(); dr["Name"] = "Peter"; dr["Question"] = question; dr["Marks"] = 14; dt.Rows.Add(dr); //Sort the datatable DataView dv = dt.DefaultView; dv.Sort = "Question ASC, Name ASC"; dt = dv.ToTable(); DataTable table = new DataTable(); table.Columns.Add("Question", typeof(string)); foreach (DataRow dr2 in dt.Rows) { //Add user Names to DataTable table if (!table.Columns.Contains(dr2["Name"].ToString())) { table.Columns.Add(dr2["Name"].ToString(), typeof(int)); } //Add empty Question rows to DataTable if (table.AsEnumerable().Where(x =&gt; x.Field&lt;string&gt;("Question") == dr2["Question"].ToString()).Count() == 0) { table.Rows.Add(dr2["Question"].ToString()); } } // Loop through all columns and questions and then calculate the mark for (int i = 1; i &lt; table.Columns.Count;i++ ) { for (int j = 0; j &lt; table.Rows.Count; j++) { string questionName = table.Rows[j][0].ToString(); for (int k = 0; k &lt; dt.Rows.Count; k++) { string userName = table.Columns[i].ColumnName; table.Rows[j][i] = dt.AsEnumerable().Where(x =&gt; x.Field&lt;string&gt;("Name") == userName).Where(y=&gt;y.Field&lt;string&gt;("Question") == questionName).Sum(r =&gt; r.Field&lt;int&gt;("Marks")); } } } Chart1.Series[seriesName].ChartType = SeriesChartType.Bar; //convert datatable to a IEnumerable form var IEtable = (table as System.ComponentModel.IListSource).GetList(); Chart1.DataBindTable(IEtable, "Question"); </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload