Ho codice C# che esegue una query in SQL e restituisce circa 2000 righe. Quindi viene creato un controllo Treeview e aggiunta la mia pagina principale. Questo viene fatto quasi istantaneamente, il che è positivo.Ottimizzazione del codice Javascript per Find()
var orgId = $('select[name="ctl00$PageContent$FunctionsDropDownList"] option:selected').val();
if (!orgId) {
return false;
}
//calls serverside get data
//This line happens quickly
$('#ctl00_PageContent_HiddenRulesDialogTriggerButton').click();
//This part takes about 10-15 minutes to finally get to the true
var i = setInterval(function() {
if ($('#ctl00_PageContent_treeview').find('table').length > 0)
{
clearInterval(i);
StartDialog();
return false;
}
});
Quindi ci vogliono circa 10-15 minuti per colpire il clearInterval(i)
. Quando lo fa, i = 978
. Non sono sicuro del perché ci sarebbe voluto così tanto tempo. Forse lo find()
è veramente lento. Qualcuno consiglia un'alternativa?
EDIT
Il polling non è il modo corretto per farlo. Presumibilmente quando chiamate il server per ottenere dati, state usando '$ .ajax()'. Il tuo callback sarà chiamato quando arrivano i dati. Probabilmente questa richiamata è già nel tuo codice e viene utilizzata per popolare il controllo Treeview. Devi solo aggiungere altro codice dopo che TreeView è popolato per mostrare la tua finestra di dialogo. – Brandon
Come si crea la vista ad albero? Non è possibile allegare questa "StartDialog" come callback quando l'azione di creazione di treeview è terminata? – jolmos
Non ho scritto il codice Javascript, ma sono bloccato cercando di risolverlo. Il treeview è creato nel codice dietro. Quindi StartDialog() crea il popup e aggiunge la visualizzazione ad albero html. Ma StartDialog() non è il problema. Il collo di bottiglia si è verificato nel find() –