[Tip] Click Event en ASP.NET Chart
Hola, este es un tip rápido por una pregunta que me llegó al correo, y resumiendo la pregunta es “Se puede interactuar con el control chart de asp.net”, y la respuesta es:
SI, se puede implementar el código para que cuando se haga click en una porción del gráfico, puedas determinar el índice dentro del mismo y con esto ya tienes un valor con el que puedes, por ejemplo, ir a un grafico de nivel más detallado.
Epa!, si no sabías que existían, son totalmente gratis y los puedes descargar desde acá:
http://archive.msdn.microsoft.com/mschart

Nota: Si tienes Visual Studio 2010 y los quieres utilizar para fx 3.5 descarga la librería y agregas el control desde la toolbox.
Entonces, manos a la obra, tengo mi gráfico:

En la Page_Load Agrego el manejador y agregamos la información del índice al PostBackValue de cada elemento dentro de la serie, luego se le agrega el comportamiento en el lado del cliente , atachando en el onclick el llamado a la función getCoodinates que es generada por el ensamblado
AddHandler Me.Chart1.Click, AddressOf Chart1_Click
For Each series As Series In Me.Chart1.Series
series.PostBackValue = "#INDEX"
Next
Dim postbackScript As String =
ClientScript.GetPostBackEventReference(Me.Chart1, "chart:@")
Me.Chart1.Attributes("onclick") =
postbackScript.Replace("@'", "' + getCoordinates(event)")
Ahora simplemente creamos el método Chart1_Click
Protected Sub Chart1_Click(ByVal sender As Object, ByVal e As ImageMapEventArgs)
Dim indice As String = e.PostBackValue
lb_seleccion.Text = Chart1.Series("Default").Points(indice).LegendText
End Sub
En donde se obtiene el índice y busco busco el punto con este índice, para obtener la leyenda y escribir en el label. Obviamente si tienes una colección de objetos, este índice te puede servir mucho y enviar como parámetro a otro método para lograr un nivel de detalle en la gráfica para la selección al hacer click.
Eso, espero que les sirva,
Saludos,
Gonzalo