2017-04-03 62 views
0

我有一個.net Web窗體方法在一次調用中調用JavaScript方法(來自用戶控件),但只觸發第一個調用。 後端代碼是:只使用ScriptManager調用JavaScript方法調用一次

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 +「'); 「,是); (頁面,GetType(),「setControlVisibility3」, 「updateControlPanelVisibility('0','」+ itemTitle +'');「,true);}}}}}}}}}}}}}}} else { { } } 它仍然只運行一次AAA。 – DennisL

+1

我將該鍵添加爲「腳本」+ Guid.NewGuid(),那麼它的作品!謝謝! – DennisL