在我的页面中,我在转发器内部有一个LinkButton,但UpdatePanel无法找到LinkButton到AsyncPostBackTrigger.
这是mycode.aspx
<asp:ScriptManager ID="Test1" runat="server" />
<asp:UpdatePanel ID="TestUpdate" runat="server" UpdateMode="Always">
<ContentTemplate>
<table width="100%">
<tr valign="top">
<td width="50%">
<asp:Repeater ID="productList" runat="server" onitemcommand="productList_ItemCommand">
<HeaderTemplate>
<ul type="disc">
</HeaderTemplate>
<ItemTemplate>
<li>
<asp:Label id="L1" runat="server" Text='<%# Eval("productName") %>'></asp:Label><br />
Price:
<asp:Label runat="server" Text='<%# Eval("productPrice") %>' ></asp:Label> Bath<br />
<img alt="" src="Images/product/product<%# Eval("productID") %>.png" style="width: 200px; height: 130px" /><br />
<asp:TextBox ID="num_product" runat="server" Text="0"></asp:TextBox><br />
<asp:LinkButton ID="order_button" runat="server"><img alt="" src="~/Images/button/order.png" /></asp:LinkButton>
</li>
</ItemTemplate>
<FooterTemplate>
</ul>
</FooterTemplate>
</asp:Repeater>
<td>
<span class="labelText">Order list</span>
<asp:BulletedList ID="orderList" runat="server" BulletStyle="Numbered">
</asp:BulletedList>
</td> …Run Code Online (Sandbox Code Playgroud) 在我正在构建的ASP.NET Web应用程序中实现的UpdatePanels中发生异常的情况下,它们会在页面上导致JavaScript错误,并在警报中提供一些高级错误输出.这对于开发来说是可行的,但是一旦系统处于生产状态,由于多种原因显然没有好处.我可以使用Try Catch等来控制Javascript错误,但在某些情况下,我想在主页面上执行操作以支持用户体验.
我如何优雅地处理UpdatePanels中出现的错误,以提供无缝和Javascript无错误的实现?
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:FileUpload onchange="clickTheButton();" ID="FileUpload1" runat="server" />
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Button1" />
</Triggers>
</asp:UpdatePanel>
Run Code Online (Sandbox Code Playgroud)
按钮1位于更新面板之外,当用户在上传框中添加文件时运行的javascript是:
function clickTheButton() {
document.getElementById('<%= Button1.ClientID %>').click();
}
Run Code Online (Sandbox Code Playgroud)
问题很简单.FileUpload1.HasFile == false.我不知道为什么会这样,但当我把它放在更新面板中时它就不再起作用了.
我已经看到了其他一些线索.但他们都没有回答为什么会这样,他们只是指出你可以下载的东西.
编辑:我真正想要这样做的主要原因是我可以获得一个..上传文件..标签在客户端上传到服务器时弹出,一旦完成,就显示在一个数据列表中.我只是无法让UpdateProgress工作.
好的 - 所以我正在使用一个使用自定义日期选择器控件的系统(我知道还有其他的...但为了一致性,我想了解为什么我的当前问题正在发生并修复它).
因此,带有文本框和Page_PreRender的自定义用户控件执行此操作:
protected void Page_PreRender(object sender, EventArgs e)
{
string clientScript = @"
$(function(){
$('#" + this.Date1.ClientID + @"').datepicker({dateFormat: 'dd/mm/yy', constrainInput: true});
});";
Page.ClientScript.RegisterStartupScript(this.GetType(), this.ClientID, clientScript, true);
//Type t = this.GetType();
//if (!Page.ClientScript.IsStartupScriptRegistered(t, this.ClientID))
//{
// Page.ClientScript.RegisterStartupScript(t, this.ClientID, clientScript, true);
//}
}
Run Code Online (Sandbox Code Playgroud)
忽略注释掉的东西 - 那是我尝试不同的东西 - 没有帮助.
我的问题是,当我加载页面时,这一切都正常.但是如果我从下拉列表中选择一些导致页面回发的内容 - 当我点击我的日期字段时它们就会停止工作.就像我应该能够点击进入文本框一样,会出现一个漂亮的日历控件.但在回发后,没有出现漂亮的日历控件!
它目前全部包含在(在托管页面中)更新面板中.所以我评论了更新面板的东西,日期在页面回发后工作.所以它似乎与该更新面板有关.
有什么建议吗?
谢谢!!
我基本上在我的UpdatePanel中有一个文字,它根据我的代码隐藏中的方法生成一个javascript数组.
在页面加载时加载我的内容时没有问题.但是,如果我尝试在我的updatepanel中执行搜索更新我的javascript数组文字,我发现在javascript已经触发后,文字会在回发时更新.
这是我所拥有的基本示例:
<script type="text\javascript">
function BindMyFunction(itemList)
{
//Do something
}
</script>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<!-- Literal containing generated JS array -->
<asp:Literal ID="ProfileJavscriptOutput" runat="server"></asp:Literal>
<ul id="person-search">
<li><asp:TextBox ID="TxtFirstname" runat="server" Text=""></asp:TextBox></li>
<!-- Update Literal onClick -->
<li><asp:ImageButton CssClass="searchbtn" ID="ImageButton1" runat="server" OnClick="ImageButton1_Click" /></li>
</ul>
<!-- Some jCarousel rendered -->
</asp:UpdatePanel>
Run Code Online (Sandbox Code Playgroud)
我一直在看以下帖子:
ASP.NET - UpdatePanel和JavaScript
但我似乎无法正确地将它应用于我的代码.
当我不使用UpdatePanel时,它工作正常.但这是一项要求,以便在执行搜索时页面位置不会移动.
我想设计一个网站,其中包含asp.net(c#)中产品的子类别.单击子类别时,必须显示产品图像,并且不应刷新主页面.我怎么能成功呢?
我正在尝试做一些许多人似乎能够做到但我无法实现任何解决方案的事情.该TinyMCE的控制工作得很好,在一个asp.net的形式,直到你有一个UpdatePanel,然后回发后坏括起来.我尝试了一些像RegisterClientScriptBlock方法的修复,但仍然不成功,我在回发后仍然失去了tinyMCE控件.
下面是一个完整的测试项目(VS 2008),它在UpdatePanel外部提供一个Control,内部有一个控件,每个项目都有一个按钮来生成回发.同样在项目中我有一个EditorTest控件,其中包含我尝试的一些调用的注释代码,以防它给任何人任何想法.
以下是MCE论坛上一些解决方案的一些来源:
AJAX
UpdatePanel
在ASP.NET应用程序中使用Ajax更新面板有哪些优缺点.有没有其他方法可以避免使用Ajax更新面板?
我正在我的网站上运行ajax更新面板.更新面板返回一些新控件.我想在从ajax调用返回控件之后为控件设置一些JavaScript.有没有办法做到这一点?谢谢你的帮助!
我有一个注册表单,其中包含3到4个下拉控件和2个日期选择器,现在当选择下拉控件值时(选择索引更改被触发)然后我不希望我的页面回发.
我使用更新面板来阻止这种帖子的行为,如下所示:
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<%--Update Panel for date picker%>
<asp:UpdatePanel ID="UpdatePanelDatepicker" runat="server">
<ContentTemplate>
<telerik:RadDatePicker ID="rdpDate1" runat="server">
</telerik:RadDatePicker>
</ContentTemplate>
</asp:UpdatePanel>
<%--Update Panel for Dropdown--%>
<asp:UpdatePanel ID="updatepaneldata" runat="server">
<ContentTemplate>
<telerik:RadComboBox ID="ddlCountry" runat="server">
</telerik:RadComboBox>
</ContentTemplate>
</asp:UpdatePanel>
</ContentTemplate>
</asp:UpdatePanel>
Run Code Online (Sandbox Code Playgroud)
所以我只是想问这是在更新面板下放置多个控件的正确方法吗?
updatepanel ×10
asp.net ×9
c# ×6
ajax ×5
javascript ×2
asp.net-ajax ×1
exception ×1
file-upload ×1
linkbutton ×1
repeater ×1
telerik ×1
tinymce ×1