Assign variable to query in .net

Hi all, I hope your appreciated help.

This is partial codebehind of my page net for Chart Controls.

My problem is the Legend of the chart.

I need see in the same Legend the value of query alias q though this is not published as a column/series of values in the chart.

With this code I see the attachment image: output q but I need see output 13%

Can you help me?

Thank you

String strQuery = " SELECT " +
                          " tPreviousYear" +
                          ",Region " +
                          ",CONCAT(Perc,'%') As `q` " +
                          " FROM tbl_m; ";

       OdbcConnection myConnectionString = 
       new odbcConnection(
       ConfigurationManager.ConnectionStrings["ConnMySQL"].ConnectionString);
       myConnectionString.Open();
       
       OdbcCommand objCmd = new OdbcCommand(strQuery, myConnectionString);
       objCmd.CommandType = CommandType.Text;
       objCmd.CommandText = strQuery;
    
       Chart1.DataSource = objCmd.ExecuteReader(); 
...

       String top = "q";
       LegendItem newItem = new LegendItem();
       newItem.ImageStyle = LegendImageStyle.Marker;
       newItem.MarkerStyle = MarkerStyle.Diamond;
       newItem.Cells.Add(LegendCellType.SeriesSymbol, "", ContentAlignment.MiddleLeft);
       newItem.Cells.Add(LegendCellType.Text, "output", ContentAlignment.MiddleLeft);
       newItem.Cells[1].CellSpan = 2;
       newItem.Cells.Add(LegendCellType.Text, "", ContentAlignment.MiddleLeft);
       newItem.Cells.Add(LegendCellType.Text, top, ContentAlignment.MiddleLeft);
       Chart1.Legends[0].CustomItems.Add(newItem);

Well… I try this solution with reader method, but I have this error:

No data exists for the row/column.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.InvalidOperationException: No data exists for the row/column.

Source Error:

Line 688:
Line 690: String top = reader[“VarPerc”].ToString();
Line 691: reader.Dispose();
Line 692: reader.Close();

thanks for your time.
Your help would be very appreciated


String myQuery = " SELECT " +
                          " tPreviousYear" +
                          ",Region " +
                          ",VarPerc " +
                          " FROM tbl_m; ";

       OdbcConnection myConnectionString = 
       new odbcConnection(
       ConfigurationManager.ConnectionStrings["ConnMySQL"].ConnectionString);
       myConnectionString.Open();
       
       OdbcCommand objCmd = new OdbcCommand(myQuery, myConnectionString);
       objCmd.CommandType = CommandType.Text;
       objCmd.CommandText = myQuery;
    
       OdbcDataReader reader = objCmd.ExecuteReader();

       Chart1.DataSource = reader; //CHART NOT GENERATE
       Chart1.DataBind();

       //Chart1.DataSource = objCmd.ExecuteReader(); //CHART GENERATE
       
       while (reader.Read())

           Response.Write(reader["VarPerc"].ToString()); //PRINT CORRECT OUTPUT -59


       Chart1.ChartAreas["ChartArea1"].Area3DStyle.Inclination = 0;
       Chart1.ChartAreas["ChartArea1"].Area3DStyle.Enable3D = false;
       Chart1.ChartAreas["ChartArea1"].AxisX.LabelStyle.Angle = 0;
       Chart1.ChartAreas["ChartArea1"].AxisX.IsLabelAutoFit = false;

       .......

       DateTime dateTime = new DateTime(DateTime.Now.AddYears(-1).Year, 12, DateTime.Now.Day);
       string s3 = dateTime.ToString("MMM yyy");
       Chart1.Series.Add(s3);
       Chart1.Series[s3].LabelFormat = "0.#";
       Chart1.Series[s3].XValueMember = "Region";
       Chart1.Series[s3].YValueMembers = "tPreviousYear";
       Chart1.Series[s3].ChartType = SeriesChartType.Column;
       Chart1.Series[s3]["PointWidth"] = "0.85";
       Chart1.Series[s3].IsValueShownAsLabel = true;
       Chart1.Series[s3]["PixelPointDepth"] = "1.0";
       Chart1.Series[s3]["DrawingStyle"] = "Cylinder";
       Chart1.Series[s3].Font = new System.Drawing.Font("Verdana", 9, FontStyle.Bold);
       Chart1.Series[s3].LabelForeColor = System.Drawing.Color.FromArgb(0, 0, 128);
       Chart1.Series[s3]["LabelStyle"] = "Top";
       Chart1.Series[s3].Color = System.Drawing.Color.FromArgb(0, 0, 205);    

       Chart1.Legends.Add(new Legend(s3));
       Chart1.Legends[s3].BackGradientStyle = GradientStyle.DiagonalLeft;
       Chart1.Legends[s3].BorderColor = Color.Black;
       Chart1.Legends[s3].BorderWidth = 2;
       Chart1.Legends[s3].BorderDashStyle = ChartDashStyle.Solid;
       Chart1.Legends[s3].ShadowOffset = 2;
       Chart1.Legends[s3].Docking = Docking.Bottom;
       Chart1.Legends[s3].Alignment = System.Drawing.StringAlignment.Center;
       Chart1.Legends[s3].Font = new System.Drawing.Font("Verdana", 12, FontStyle.Bold);
       Chart1.Series[s3].Legend = s3;   
  
       String top = reader["VarPerc"].ToString(); //LINE OF ERROR: No data exists for the row/column.
       LegendItem newItem = new LegendItem();
       newItem.ImageStyle = LegendImageStyle.Marker;
       newItem.MarkerStyle = MarkerStyle.Diamond;
       newItem.Cells.Add(LegendCellType.SeriesSymbol, "", ContentAlignment.MiddleLeft);
       newItem.Cells.Add(LegendCellType.Text, "top", ContentAlignment.MiddleLeft);
       newItem.Cells[1].CellSpan = 2;
       newItem.Cells.Add(LegendCellType.Text, "", ContentAlignment.MiddleLeft);
       newItem.Cells.Add(LegendCellType.Text, top, ContentAlignment.MiddleLeft);
       Chart1.Legends[0].CustomItems.Add(newItem);  

       reader.Dispose();
       reader.Close();

       objCmd.Dispose();
       objCmd.Cancel();              
                           
       myConnectionString.Dispose(); 
       myConnectionString.Close();