Tengo una vista de informe donde se encuentran un montón de controles, hay un código de ejemplo:
@Html.DevExpress().DropDownEdit( settings =>{ settings.Name = "SomeList"; settings.Width = 100; settings.SetDropDownWindowTemplateContent(c =>{ @Html.DevExpress().ListBox( ... ).BindList(ViewData["SomeList"]).Render(); some code... ).GetHtml()Cuando se procesa por primera vez, funciona bien, pero en la lógica comercial hay otro menú desplegable, llamémoslo menú desplegable #2. Cuando el usuario selecciona algunos valores en el menú desplegable # 2, JS maneja esta acción, envía una solicitud al servidor para obtener el valor real para el primer menú desplegable, luego borra todos los valores representados del menú desplegable # 1 e inserta nuevos elementos.
Y el problema en el rendimiento radica en cómo devexpress crea nuevos elementos en el lado del cliente. Desde el backend, ahora se pueden agregar 8000 elementos nuevos al menú desplegable n. ° 1 y sigue creciendo. Y el usuario debe esperar de 5 a 10 segundos cuando el navegador lo procesa. Traté de investigar qué sucede cuando se crea un nuevo elemento, pero hay muchas funciones de devexpress que llaman a otras funciones.
El código JS se parece a:
SomeList.BeginUpdate(); l = data.SomeList.length; while (x < l) { SomeList.AddItem(data.SomeList[x].Name, data.SomeList[x].Id); x++; } SomeList.EndUpdate();BeginUpdate y EndUpdate son funciones devexpress que prohíben el control de procesamiento del navegador al agregar nuevos elementos. Sin esta función se tarda una eternidad en terminar de agregar nuevos elementos. Sé que el punto de inicio del problema es: código de creación de elementos SomeList.AddItem (...).
Entonces, mi pregunta: ¿hay alguna forma de hacer algo como console.trace(SomeList.AddItem(...)) y ver el seguimiento completo que se ejecutará en el primer pase de código?
¿También hay forma de determinar qué llamada de función tarda mucho tiempo en ejecutarse?