2009-01-20 93 views
0

我有一個不起作用的updatepanel。我的整個代碼:C#Ajax更新面板不起作用

<%@ Page Language="C#" MasterPageFile="~/Master.Master" AutoEventWireup="true" CodeBehind="AlgemeenDocument.aspx.cs" Inherits="PCK_Web_new.WebForm7" Title="Untitled Page" %> 

<asp:ScriptManager ID="ScriptManager1" runat="server" /> 

<script language="javascript" type="text/javascript"> 

    function showOverlay(panel) 
    { 
     var pageHeight; 

     // Get viewport height 
     if (typeof window.innerWidth != 'undefined') 
      // Get viewport height - FF 
      vpHeight = window.innerHeight; 
     else 
      // Get viewport height - IE 
      vpHeight = document.documentElement.clientHeight; 

     // Get site height (div) 

     var treeview = document.getElementById("Treeview"); 
     var siteHeight = 0; 

     if(treeview != null) 
     { 
      siteHeight = document.getElementById("Treeview").offsetHeight; 
     } 
     siteHeight += document.getElementById("HeaderContainer").offsetHeight; 
     siteHeight += document.getElementById("divMainMenu").offsetHeight; 



     // Compare heights and set the overlay height 
     if(vpHeight < siteHeight) 
      pageHeight = siteHeight + "px"; 
     else 
      pageHeight = vpHeight + "px"; 


     var div = document.getElementById(panel); 

     div.className = "DocOverlayShow"; 
     div.style.height = pageHeight; 

     document.getElementById('<%= pnlAddComment.ClientID %>').className="DocAddCommentBox"; 
    } 

    function hideOverlay() 
    { 
     //document.getElementById(commentID).style.visibility = "hidden"; 
     //document.getElementById(titelID).style.visibility = "hidden"; 

     var inputs = new Array(); 
     inputs = document.getElementsByTagName('input'); 

     for (i = 0; i < inputs.length; i++) 
     { 
      if (inputs[i].type == 'text') 
      { 
       inputs[i].value = ''; 
      } 
     }  

     document.getElementById('<%= txtTitel.ClientID %>').value = ""; 
     document.getElementById('<%= txtComment.ClientID %>').value = ""; 

     document.getElementById('<%= pnlOverlay.ClientID %>').className = "DocOverlayHide"; 
    } 

</script> 


    <asp:Panel ID="pnlOverlay" runat="server" CssClass="DocOverlayHide"> 

     <!-- <div id="DocAddCommentBox"> --> 
     <asp:Panel ID="pnlAddComment" runat="server" CssClass="DocAddCommentBox"> 

      <div id="DocACTitleBox"> 
       Opmerking plaatsen 
      </div> 

      <div id="DocACContentBox"> 
       <div class="DocACLabel"> 
        Titel: 
       </div> 
       <div class="DocACInput"> 
        <asp:TextBox ID="txtTitel" runat="server"></asp:TextBox> 
       </div> 
       <div class="ClearFloat"> 



       </div> 
       <div class="DocACLabel"> 
        Opmerking: 
       </div> 
       <div class="DocACInput"> 
        <asp:TextBox ID="txtComment" runat="server" TextMode="MultiLine" Rows="15" 
         Columns="40"> 
        </asp:TextBox> 
       </div> 
       <div class="ClearFloat"> 



       </div> 
       <div id="DocBtnBox"> 
        <input id="btnCancel" type="button" onclick="hideOverlay()" value="Annuleren"/> 


        <asp:UpdatePanel ID="UpdatePanel2" runat="server" EnableViewState="False" UpdateMode="Always" RenderMode="Block"> 
        <ContentTemplate> 
         <asp:Button ID="btnSave" runat="server" CssClass="btnSave" onclick="btnSave_Click" Text="Opslaan" /> 
         <asp:Label ID="lblTitleError" runat="server" Text="ertroro"></asp:Label> 
        </ContentTemplate> 
        </asp:UpdatePanel> 


       </div> 
       <div class="ClearFloat">&nbsp;</div> 
      </div> 

     </asp:Panel> 
     <!-- </div> --> 


     <asp:Panel ID="pnlResult" runat="server" CssClass="DocOverlayHide"> 

      <div id="DocResultBox"> 
       <div id="Div1"> 
        Opmerking plaatsen 
       </div> 

       <div id="Div2"> 
        <div class="DocACLabel"> 
         <asp:Label ID="lblResult" runat="server" Text="Label"></asp:Label> 
        </div> 

        <div id="Div1"> 
         <input id="btnClose" type="button" onclick="hideOverlay()" value="Sluiten"/> 
        </div> 
        <div class="ClearFloat">&nbsp;</div> 
       </div> 
      </div> 

     </asp:Panel> 

</asp:Panel> 



<div class="DocContainer"> 

    <div class="DocTitleBox"> 

     <div class="DocLogo"> 
      Het logo 
     </div> 

     <div class="DocTitle"> 
      <asp:Label ID="lblTitle" runat="server"></asp:Label> 
     </div> 

     <div class="DocType"> 
      Document soort 
      <asp:Label ID="lblDocType" runat="server"></asp:Label>  
     </div> 

     <div class="DocBtn"> 
      <input type="button" value="Opmerking" onclick="showOverlay('<%=pnlOverlay.ClientID %>')" /> 
     </div> 
    </div> 

    <div class="DocContentBox"> 

     <asp:Label ID="lblID" runat="server"></asp:Label> 

     <p>Algemeen Document Geen vaste opmaak.</p> 

    </div> 

</div> 

我試圖觸發,但他們沒有工作..

當我按下btnSave這是這是執行的代碼:

protected void btnSave_Click(object sender, EventArgs e) 
    { 

     lblTitleError.Text = "BUTTON PRESSED"; 

    } 

當我設置斷點時,它運行代碼。但標籤文字未設置:S

希望有人能幫忙嗎?

Thnx!

編輯:

我也試過這樣:

<div id="DocBtnBox"> 
        <input id="btnCancel" type="button" onclick="hideOverlay()" value="Annuleren"/> 

        <asp:Button ID="btnSave" runat="server" CssClass="btnSave" onclick="btnSave_Click" Text="Opslaan" /> 

        <asp:UpdatePanel ID="UpdatePanel2" runat="server" EnableViewState="False" UpdateMode="Always"> 
        <ContentTemplate> 
         <asp:Label ID="lblTitleError" runat="server" Text="ertroro"></asp:Label> 
        </ContentTemplate> 
         <Triggers> 
          <asp:AsyncPostBackTrigger ControlID="btnSave" EventName="Click" /> 
         </Triggers> 
        </asp:UpdatePanel> 

       </div> 

回答

1

我認爲網上最好的導師是喬·斯塔格納。他的.NET材料非常棒。

這是一個link他在那裏準確地向你展示如何做你正在嘗試的東西。

附錄:

如果我是你,我會創建喬提供的示例代碼乾淨的頁面。請轉至http://www.asp.net/LEARN/ajax-videos/並找出您想要基於您的解決方案的哪個教程。當你得到了一個示例頁面的教程後,我會慢慢地逐步添加你的應用程序所需的邏輯。

+0

我看過視頻,但我仍然沒有工作。 – Martijn 2009-01-20 10:45:32

0

你想它的文本設置和btnSave按鈕元素都應該更新面板元素中的標籤。

+0

我有:滾動到代碼的中間 – Martijn 2009-01-20 10:13:56

0

嘗試從UpdatePanel中刪除EnableViewState =「False」。