2010-03-19 6 views
0

J'ai un répéteur qui est placé dans un panneau de mise à jour. Lorsque l'utilisateur entre une nouvelle valeur, le répéteur est mis à jour sans publication. Est-il possible d'obtenir la ligne qui a été mise à jour dans JQuery afin que je puisse placer un effet sur elle pour rendre le changement moins subtile? Par exemple, j'aimerais fondre une nouvelle couleur sur la ligne qui a été modifiée.Modifier la ligne dans le répéteur

Merci

+0

Lorsque vous ne dites pas de publication, voulez-vous dire non une publication en pleine page mais une publication dans le panneau de mise à jour, ou y a-t-il des JS qui ajustent le contenu du répéteur directement dans la page? –

+0

Désolé, oui. Il y a une publication, mais c'est juste une mise à jour partielle de la page. –

Répondre

0

Merci pour les réponses. J'ai réussi à résoudre le problème en stockant une liste des choses que l'utilisateur a modifié avant de soumettre, puis en recherchant ces éléments après la mise à jour de l'updatepanel. Chaque fois qu'un élément a été trouvé, cette ligne a été mise à jour.

1

Il est assez facile de faire un rappel à un certain JS sur la page en utilisant le ScriptManager. Ce code a fonctionné pour moi à l'intérieur d'un gestionnaire d'événement pour un événement que j'ai reçu à travers un panneau de mise à jour.

ScriptManager.RegisterStartupScript(Me, Me.GetType(), "someKey", "someFunc();", True) 

La clé est pas aussi important dans ce cas, mais ça va le coup d'envoi de la fonction someFunc JS sur la page. Si vous pouvez marquer une classe CSS sur les lignes en cours de mise à jour, vous pouvez définir une fonction qui effectue un effet de mise en évidence jQuery sur ces lignes. Je pense que ce serait l'approche que je prendrais.

La chaîne de "someFunc();" est exécuté, et le Vrai après il l'enveloppe dans les balises de script appropriées pour que vous n'ayez pas à le faire. Je l'ai aussi utilisé (à des fins spécifiques) pour faire des choses comme la pop ouvrir une nouvelle fenêtre, comme ceci:

ScriptManager.RegisterStartupScript(Me, Me.GetType(), "viewReport", "window.open('" + reportURL + "','_blank');", True) 

qui se passe dans un événement Button.Click qui vit à l'intérieur d'un UpdatePanel, ils peuvent cliquer sur le bouton "Voir le rapport" et il apparaît dans une fenêtre séparée, sans faire une actualisation de la page complète.

Espérons que cela aide ou que vous pouvez trouver un moyen de travailler avec. :)

+0

Salut, Merci pour la réponse, cela m'a donné quelques idées. Je pense que ce que vous avez dit fonctionnera, mais je ne suis pas tout à fait sûr de la partie marquage. Existe-t-il un moyen de savoir exactement quelle ligne est mise à jour? Si oui, je peux alors ajouter la classe CSS à cela et ajouter le code que vous avez donné. –

1

Je suppose que vous avez une zone de texte ou un contrôle de quelque sorte provoquant la publication dans le UpdatePanel. Si oui, alors vous pouvez utiliser le endrequesthandler et utiliser Jquery pour obtenir la ligne et l'animer:

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequestHandler); 

function endRequestHandler(sender, args){ 
    $("#" + sender._postBackSettings.sourceElement.id).parents("tr").animate(....); 
} 

ou jQuery 1.4.2

function endRequestHandler(sender, args){ 
    $("#" + sender._postBackSettings.sourceElement.id).parentsUntil("table").animate(....); 
} 

Hope this helps

Mise à jour: Voudrez peut Filtrer par une classe CSS ou quelque chose, sauf si vous voulez que cela arrive à tous les éléments de publication dans une table

Questions connexes