Pregunta

tengo un GridView Controle donde aneo mostrar información sobre alguna variable importante mía. Estas variables varían en el tiempo y me gustaría trazar su tendencia en la tabla como la última columna usando una Chart control.

Aquí hay una vista genérica del código:

<asp:GridView runat="server" ID="Variables_GridView" CssClass="grid" AutoGenerateColumns="false" Width="100%">
   <FooterStyle BackColor="White" ForeColor="#000066" />
   <HeaderStyle CssClass="gridheader" />
   <RowStyle ForeColor="#000066" />
   <SelectedRowStyle BackColor="#669999" Font-Bold="True" ForeColor="White" />
   <SortedAscendingCellStyle BackColor="#F1F1F1" />
   <SortedAscendingHeaderStyle BackColor="#007DBB" />
   <SortedDescendingCellStyle BackColor="#CAC9C9" />
   <SortedDescendingHeaderStyle BackColor="#00547E" />
   <Columns>
      <asp:BoundField DataField="VariableName" HeaderText="Name" />
      <asp:BoundField DataField="VariableType" HeaderText="Type" />
      <asp:BoundField DataField="VariableDescription" HeaderText="Description" />
      <asp:TemplateField HeaderText="Latest values">
         <ItemTemplate>
            <asp:Chart ID="Values_Chart" runat="server" Width="150" Height="50">
               <Series>
                  <asp:Series Name="Values_Series" XAxisType="Primary" XValueType="Int32" ChartType="Line"></asp:Series>
               </Series>
               <ChartAreas>
                  <asp:ChartArea Name="Values_ChartArea"></asp:ChartArea>
               </ChartAreas>
            </asp:Chart>
         </ItemTemplate>
      </asp:TemplateField>
   </Columns>
</asp:GridView>

En mi código, puede encontrar este tipo, el utilizado para las propiedades de mapeo (las que especifiqué):

public class VariableRepresentation {

        private string variableName;

        private string variableType;

        private string variableDescription;

        private float[] variableValues;

        public string VariableName {
            get { return this.variableName; }
            set { this.variableName = value; }
        }

        public string VariableType {
            get { return this.variableType; }
            set { this.variableType = value; }
        }

        public string VariableDescription {
            get { return this.variableDescription; }
            set { this.variableDescription = value; }
        }

        public float[] VariableValues {
            get { return this.variableValues; }
            set { this.variableValues = value; }
        }

        public VariableRepresentation(string name, string type, string description) {
            this.variableName = name;
            this.variableType = type;
            this.variableDescription = description;
        }

        public VariableRepresentation(string name, string type, string description, float[] initialValues) : this(name, type, description) {
            this.variableValues = initialValues;
        }

    }

¡OK!

En el método de carga de esta página tengo lo siguiente:

protected void Page_Load(object sender, EventArgs e) {
   VariableRepresentation[] vars = new VariableRepresentation[6];
   vars[0] = new VariableRepresentation("Variable 1", 
      "Type 1", "A generic variable", new float[] { 11, 12, 13, 14, 11, 20 });
   vars[1] = new VariableRepresentation("Variable 2", 
      "Type 2", "A generic variable", new float[] { 11, 12, 13, 14, 11, 20 });
   vars[2] = new VariableRepresentation("Variable 3", 
      "Type 3", "A generic variable", new float[] { 11, 12, 13, 14, 11, 20 });
   vars[3] = new VariableRepresentation("Variable 4", 
      "Type 1", "A generic variable", new float[] { 11, 12, 13, 14, 11, 20 });
   vars[4] = new VariableRepresentation("Variable 5", 
      "Type 2", "A generic variable", new float[] { 11, 12, 13, 14, 11, 20 });
   vars[5] = new VariableRepresentation("Variable 6", 
      "Type 3", "A generic variable", new float[] { 11, 12, 13, 14, 11, 20 });
   this.Variables_GridView.DataSource = vars;
   this.Variables_GridView.DataBind();
}

Bueno, como se puede imaginar, la salida es una tabla pero mi gráfico está vacío. ¿Cómo puedo actuar en el archivo .aspx, en el marcado XHTML, el primer código que mostré, para dejar que esto suceda?

Supongo que me pongo el lugar en el campo de la plantilla, algunas expresiones de enlace de datos, pero no sé qué colocar allí ...

¿Usted me podría ayudar por favor?

Gracias

PD: Tenga en cuenta que no proporcioné una solución aquí, el asunto es que no sé cómo conectar los datos a la tabla, en realidad es correcto que las gráficos (una por línea de mesa) no muestren nada, porque lo hice. No especifique ninguna expresión vinculante en la página ASPX ni una pieza de código adecuada en CodeBeHind.

¿Fue útil?

Solución

¿No sé si hay una forma conveniente de vincular datos a la serie de gráficos directamente en XHTML? Pero tal vez podría crear un evento en GridView.RowDatabound ¿Encuentra el control del gráfico allí y luego agregar los datos a la serie de gráficos?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top