J'ai une méthode de formulaire Web .net pour appeler la méthode JavaScript (à partir d'un contrôle utilisateur) en un seul appel, mais seul le premier appel est déclenché. Les codes de back-end sont:L'appel de méthode JavaScript ne peut être appelé qu'une seule fois à l'aide de ScriptManager
bool isAddOnsExisting = priceSummaryList.Any(x => x.ItemName == "AAA");
UcSummary.setPanelVisibility(isAddOnsExisting, "AAAPanel");
bool isControlExisting = priceSummaryList.Any(x => x.ItemName == "BBB");
UcSummary.setPanelVisibility(isControlExisting, "BBBPanel");
La méthode de back-end 'UcSummary' est:
public void setPanelVisibility(bool isExisting, string itemTitle)
{if (isExisting)
{ScriptManager.RegisterStartupScript(Page, GetType(),
"setVisibility","updatePanelVisibility('1','" + itemTitle + "');", true);}
else
{ScriptManager.RegisterStartupScript(Page, GetType(),
"setVisibility","updatePanelVisibility('0', '" + itemTitle + "');", true);}}
La méthode JavaScript est:
function updatePanelVisibility(isExisting, itemPanel)
{
var theItemPanel = "#" + itemPanel;
if (isExisting == '1') {
$(theItemPanel).fadeIn();
}
else {
$(theItemPanel).hide();
}
}
Je trouve que la première méthode pour 'AAA' sera déclenché mais 'BBB' est ignoré. Quelqu'un pourrait-il conseiller la raison? Merci!
J'ai changé la méthode d'appel à: si (isExisting) { ScriptManager.RegisterClientScriptBlock (Page, GetType(), "setControlVisibility2", "updateControlPanelVisibility ('1', '" + ItemTitle + "'); ", vrai); } { autre ScriptManager.RegisterClientScriptBlock (Page, GetType(), "setControlVisibility3", "updateControlPanelVisibility ('0', '" + ItemTitle + "');", true); } Il fonctionne toujours seulement une fois pour AAA. – DennisL
J'ajoute la clé comme "Script" + Guid.NewGuid(), alors ça marche! Merci! – DennisL