C # Ajax updatepanel не работает - PullRequest
       10

C # Ajax updatepanel не работает

0 голосов
/ 20 января 2009

У меня есть панель обновления, которая не работает. Весь мой код:

<%@ 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>

Ответы [ 3 ]

1 голос
/ 20 января 2009

Я думаю, что лучшим репетитором в Интернете является Джо Стэгнер. Его материал для .NET потрясающий.

Вот ссылка , где он показывает вам точно, шаг за шагом, как сделать то, что вы пытаетесь

Добавление:

На вашем месте я бы создал чистую страницу из примера кода, предоставленного Джо. Перейдите к http://www.asp.net/LEARN/ajax-videos/ и выясните, на каком учебнике вы хотите основать свое решение. После того, как вы получите учебное пособие, работающее над образцом страницы, я постепенно, постепенно добавлю логику, необходимую для вашего приложения.

0 голосов
/ 23 января 2009

Попробуйте удалить EnableViewState = "False" из панели обновления.

0 голосов
/ 20 января 2009

Метка, для которой нужно установить текст, и элементы кнопки btnSave должны находиться внутри элемента панели обновления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...