C# usercontrol中的UpdatePanel不更新客户端控件
我已经为这件事挠头好几个小时了。我有一个用户控件,它有标签、文本框等。所有这些都包装在更新面板中。我在uc中有一个按钮,单击该按钮时,它会更改标签 当我将此uc放入表单/页面时,无论我做什么,我都看不到标签的更改。它在服务器端更改,但在客户端更改。我总是尝试updatemode,有条件地使用触发器,我尝试了一切。scriptmanager很好,如果我将代码复制到它自己的页面,它就可以正常工作。scriptmanager在页面上,而不是uc,所以不是它 有人举过这样的例子吗 aspx: 大师:C# usercontrol中的UpdatePanel不更新客户端控件,c#,asp.net,ajax,C#,Asp.net,Ajax,我已经为这件事挠头好几个小时了。我有一个用户控件,它有标签、文本框等。所有这些都包装在更新面板中。我在uc中有一个按钮,单击该按钮时,它会更改标签 当我将此uc放入表单/页面时,无论我做什么,我都看不到标签的更改。它在服务器端更改,但在客户端更改。我总是尝试updatemode,有条件地使用触发器,我尝试了一切。scriptmanager很好,如果我将代码复制到它自己的页面,它就可以正常工作。scriptmanager在页面上,而不是uc,所以不是它 有人举过这样的例子吗 aspx: 大师: &
<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="KezberProjectManager.master.cs" Inherits="KezberProjectManager.KezberProjectManager" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<!-- Le styles -->
<link href="assets/css/bootstrap.css" rel="stylesheet"/>
<link href="assets/css/bootstrap-responsive.css" rel="stylesheet"/>
<link href="assets/css/kezblu.styles.css" rel="stylesheet"/>
<style type="text/css">
</style>
<!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->
<!--[if lt IE 9]>
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<script type="text/javascript" src="http://code.jquery.com/jquery-1.9.0.min.js"></script>
<script type="text/javascript" src="assets/js/kezcommon.js"></script>
<script type="text/javascript">
$(document).ready
(
function () {
createAutoClosingAlert('.success_alert', 6000);
}
);
function createAutoClosingAlert(selector, delay) {
var alert = $(selector).alert();
window.setTimeout(function () { $(alert).slideUp() }, delay);
}
</script>
<asp:ContentPlaceHolder ID="head" runat="server">
</asp:ContentPlaceHolder>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true">
</asp:ScriptManager>
<div class="navbar navbar-inverse navbar-fixed-top">
<div class="navbar-inner">
<div class="container">
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</a>
<a class="brand" href="default.aspx">KezBlu</a>
<div class="nav-collapse collapse">
<ul class="nav">
<asp:Repeater runat="server" id="MenuRepeater">
<headertemplate>
</headertemplate>
<itemtemplate>
<%# Eval("Content") %>
</itemtemplate>
<footertemplate>
</footertemplate>
</asp:Repeater>
</ul>
<div id="auth">
<asp:HyperLink id="lnkSignIn" runat="server">Sign In</asp:HyperLink>
<br />
<asp:LinkButton ID="lnkSignOut" runat="server" onclick="lnkSignOut_Click">Sign Out</asp:LinkButton>
</div>
</div><!--/.nav-collapse -->
</div>
</div>
</div>
<div id="wrap">
<div id="content">
<div id="alerts">
<div class="bs-docs-example">
<div runat="server" id="success_alert" class="success_alert alert alert-success fade in">
<button type="button" class="close" data-dismiss="alert">×</button>
<div runat="server" id="success_alert_text">
</div>
</div>
</div>
<div class="bs-docs-example">
<div runat="server" id="error_alert" class="error_alert alert alert-error fade in">
<button type="button" class="close" data-dismiss="alert">×</button>
<div runat="server" id="error_alert_text">
</div>
</div>
</div>
</div>
<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
</asp:ContentPlaceHolder>
</div>
</div>
</form>
<!-- Le javascript
================================================== -->
<!-- Placed at the end of the document so the pages load faster -->
<script type="text/javascript" src="assets/js/bootstrap.min.js"></script>
</body>
</html>
$(文件)。准备好了吗
(
函数(){
创建自动关闭警报('.success\u alert',6000);
}
);
函数createAutoClosingAlert(选择器,延迟){
var-alert=$(选择器).alert();
setTimeout(函数(){$(警报).slideUp()},延迟);
}
登录
退出
&时代;
&时代;
我认为您的用户控件中缺少公开UpdateMode属性和内部UpdatePanel控件的Update方法的代码。您需要这样做,以便外部源可以显式刷新用户控件的内容。您需要以下内容:
public UpdatePanelUpdateMode UpdateMode
{
get { return this.UpdatePanel1.UpdateMode; }
set { this.UpdatePanel1.UpdateMode = value; }
}
public void Update()
{
this.UpdatePanel1.Update();
}
现在可以将用户控件添加到.aspx页面,并以声明方式设置内部UpdatePanel控件的UpdateMode属性:
<div>
<uc1:ProjectView ID="ProjectView1" runat="server" UpdateMode="Conditional" />
</div>
以下文件对此过程进行了详细说明:
你能把你的代码放到这篇文章里吗?很难说不看。好吧,我添加了它,但实际上,它归结为,aspx中的一个用户控件,用户控件有一个更改标签的按钮。尝试将
conditionalmode
更改为always,并设置ChildrenAsTriggers=“true”
相信我,我已经尝试过了。我只是再试了一次,它仍然不起作用。
<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="KezberProjectManager.master.cs" Inherits="KezberProjectManager.KezberProjectManager" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<!-- Le styles -->
<link href="assets/css/bootstrap.css" rel="stylesheet"/>
<link href="assets/css/bootstrap-responsive.css" rel="stylesheet"/>
<link href="assets/css/kezblu.styles.css" rel="stylesheet"/>
<style type="text/css">
</style>
<!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->
<!--[if lt IE 9]>
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<script type="text/javascript" src="http://code.jquery.com/jquery-1.9.0.min.js"></script>
<script type="text/javascript" src="assets/js/kezcommon.js"></script>
<script type="text/javascript">
$(document).ready
(
function () {
createAutoClosingAlert('.success_alert', 6000);
}
);
function createAutoClosingAlert(selector, delay) {
var alert = $(selector).alert();
window.setTimeout(function () { $(alert).slideUp() }, delay);
}
</script>
<asp:ContentPlaceHolder ID="head" runat="server">
</asp:ContentPlaceHolder>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true">
</asp:ScriptManager>
<div class="navbar navbar-inverse navbar-fixed-top">
<div class="navbar-inner">
<div class="container">
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</a>
<a class="brand" href="default.aspx">KezBlu</a>
<div class="nav-collapse collapse">
<ul class="nav">
<asp:Repeater runat="server" id="MenuRepeater">
<headertemplate>
</headertemplate>
<itemtemplate>
<%# Eval("Content") %>
</itemtemplate>
<footertemplate>
</footertemplate>
</asp:Repeater>
</ul>
<div id="auth">
<asp:HyperLink id="lnkSignIn" runat="server">Sign In</asp:HyperLink>
<br />
<asp:LinkButton ID="lnkSignOut" runat="server" onclick="lnkSignOut_Click">Sign Out</asp:LinkButton>
</div>
</div><!--/.nav-collapse -->
</div>
</div>
</div>
<div id="wrap">
<div id="content">
<div id="alerts">
<div class="bs-docs-example">
<div runat="server" id="success_alert" class="success_alert alert alert-success fade in">
<button type="button" class="close" data-dismiss="alert">×</button>
<div runat="server" id="success_alert_text">
</div>
</div>
</div>
<div class="bs-docs-example">
<div runat="server" id="error_alert" class="error_alert alert alert-error fade in">
<button type="button" class="close" data-dismiss="alert">×</button>
<div runat="server" id="error_alert_text">
</div>
</div>
</div>
</div>
<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
</asp:ContentPlaceHolder>
</div>
</div>
</form>
<!-- Le javascript
================================================== -->
<!-- Placed at the end of the document so the pages load faster -->
<script type="text/javascript" src="assets/js/bootstrap.min.js"></script>
</body>
</html>
public UpdatePanelUpdateMode UpdateMode
{
get { return this.UpdatePanel1.UpdateMode; }
set { this.UpdatePanel1.UpdateMode = value; }
}
public void Update()
{
this.UpdatePanel1.Update();
}
<div>
<uc1:ProjectView ID="ProjectView1" runat="server" UpdateMode="Conditional" />
</div>