2017-04-03 25 views
0

1回の呼び出しでJavaScriptメソッド(ユーザーコントロールから)を呼び出すための.net Webフォームメソッドがありますが、最初の呼び出しのみがトリガーされます。 バックエンド・コードは:バックエンドからJavaScriptメソッド呼び出しは、ScriptManagerを使用して1回のみ呼び出すことができます

bool isAddOnsExisting = priceSummaryList.Any(x => x.ItemName == "AAA"); 
UcSummary.setPanelVisibility(isAddOnsExisting, "AAAPanel"); 

bool isControlExisting = priceSummaryList.Any(x => x.ItemName == "BBB"); 
UcSummary.setPanelVisibility(isControlExisting, "BBBPanel"); 

方法 'UcSummary' である:

 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);}} 

JavaScriptの方法がある:

function updatePanelVisibility(isExisting, itemPanel) 
{ 
    var theItemPanel = "#" + itemPanel; 

    if (isExisting == '1') { 
     $(theItemPanel).fadeIn(); 
    } 
    else { 
     $(theItemPanel).hide(); 
    } 
} 

私のためにのみ第一の方法を発見しました'AAA'がトリガーされますが、 'BBB'は無視されます。誰もその理由を助言できますか?ありがとう!

答えて

1

私は、両方の起動スクリプトに同じクラスと名前を使用していて、もう一方のスクリプトを上書きするという問題があると考えています。

からもう少し情報:https://msdn.microsoft.com/en-us/library/bb359558(v=vs.110).aspx

public static void RegisterStartupScript(
Control control, 
Type type, 
string key, 
string script, 
bool addScriptTags) 

...

キー - 可能System.String - スクリプトブロックの一意の識別子。

+0

私に、呼び出し方法を変更した:(isExisting) { ScriptManager.RegisterClientScriptBlock(ページ、メソッドGetType()、 "setControlVisibility2"、 "updateControlPanelVisibility( '1'、 '" + itemTitle + "'場合) 。 "、真);他 } { ScriptManager.RegisterClientScriptBlock(ページ、メソッドGetType()、 "setControlVisibility3"、 "updateControlPanelVisibility( '0'、 '" + itemTitle + "');"、TRUE)。 } これはAAAに対して1回だけ実行されます。 – DennisL

+1

私は "Script" + Guid.NewGuid()としてキーを追加し、それは動作します!ありがとう! – DennisL

関連する問題