2012-12-04 20 views
0

我想隱藏一些使用Javascript的div,但我認爲回發不斷重新加載頁面。 爲了讓事情變得更加複雜,我的按鈕以編程方式添加到我的代碼後面。以編程方式添加按鈕和OnClientClick但仍然有回發問題

foreach (string line in thefilters) 
     { 
      Button newButton = new Button(); 
      newButton.ID = Convert.ToString(line); 
      newButton.Text = Convert.ToString(line); 
      newButton.CssClass = "tblbutton"; 
      //newButton.Attributes.Add("onclick", "hide_div("+newButton.ID+")"); 
      newButton.OnClientClick = "return hide_div('" + newButton.ID + "')"; 
      pnl_left.Controls.Add(newButton); 
     } 

我的javascript位於標題如下。

<script type="text/javascript"> 
     function hide_div(filter) { 
      var pnl_right = document.getElementById("pnl_right"); 
      var listofelements = pnl_right.getElementsById("div"); 
      for (var i = 0; i < listofelements.length; i++) { 
       if (listofelements[i].id.indexOf(filter) == 0) { 

        document.getElementById(listofelements[i].id).style.display = 'inline'; 
       } 
       else { 
        document.getElementById(listofelements[i].id).style.display = 'none'; 
       } 
      } 
      return false; 

     } 

我可能在JavaScript的問題,什麼我想要實現,但我相信,如果我能阻止回傳的話,我可以解決的JavaScript自己..

感謝提前任何建議。

+0

你檢查了瀏覽器的控制檯嗎? Javascript中可能存在錯誤,這會阻止'return false'執行,因此實際上並不希望您想要。你可以在你的Javascript函數的某個地方放置一個'alert'來查看它是否實際被調用? – Ian

+0

您的OnClientClick應該設置爲「return hide_div('」+ newButton.ClientID +「')」; – Joe

回答

1

你還沒有顯示你正在添加控件的事件。但我從你的問題假設你正在Page_Load中這樣做。如果是,請嘗試移動OnInit事件。

其次,在Page_Load中需要檢查

if(!IsPostBack) 
{ 
//your code for adding controls 
} 

希望有所幫助。

相關問題