C# Ajax updatepanel 不起作用
我有一个更新面板不起作用。 我的整个代码:
<%@ 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"> </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"> </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
希望有人可以提供帮助吗?
谢谢!
编辑:
我也尝试过这个:
<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>
I have an updatepanel which doesn't work. My whole code:
<%@ 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"> </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"> </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>
I have tried triggers, but they didn't work..
When i press btnSave this is the code that's executed:
protected void btnSave_Click(object sender, EventArgs e)
{
lblTitleError.Text = "BUTTON PRESSED";
}
When i set a breakpoint, it runs the code. But the label text isn't set :S
Hope someone can help?
Thnx!
EDIT:
I also tried this:
<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>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我认为网络上最好的导师是 Joe Stagner。 他的 .NET 材料非常棒。
这是一个链接,他在其中准确地向您展示了步骤-逐步说明如何做您正在尝试的事情。
附录:
如果我是你,我会根据 Joe 提供的示例代码创建一个干净的页面。 转到 http://www.asp.net/LEARN/ajax-videos/ 并找出您的解决方案要基于哪个教程。 在您完成示例页面上的教程后,我会慢慢地、一点一点地添加您的应用程序所需的逻辑。
I think the best tutor on the web is Joe Stagner. His material for .NET is awesome.
Here is a link where he shows you exactly, step-by-step how to do what you are trying.
Addendum:
If I were you I'd create a clean page from the sample code Joe has provided. Go to http://www.asp.net/LEARN/ajax-videos/ and figure out which tutorial you want to base your solution on. After you get the tutorial working on a sample page, I'd slowly, piece-by-piece add in the logic you need for your application.
您希望设置其文本的标签和 btnSave 按钮元素都应位于更新面板元素内。
The label you want its text to be set and the btnSave button elements should both be inside the Update Panel element.
尝试从 UpdatePanel 中删除 EnableViewState="False"。
Try removing EnableViewState="False" from the UpdatePanel.