我的AJAX和ASP.NET 3.5有问题:( 问题真的很奇怪,因为我在不同的页面上使用相同的东西,它在那里工作正常,但在这个特定的页面上,这是行不通的。
这就是我所拥有的:
<asp:UpdatePanel ID="upMain" runat="server" UpdateMode="Conditional" Visible="true" RenderMode="Inline">
<ContentTemplate>
<asp:DropDownList ID="ddlNewService_PortTelco" runat="server" Width="250" CssClass="dropdown" AutoPostBack="true" OnSelectedIndexChanged="Provision_PortedTelcoChanged"></asp:DropDownList>
</ContentTemplate>
</asp:UpdatePanel>
在DropDown之前的路上有一个DIV(html一个),然后是几个asp:Panels。 我不明白为什么这会造成全面的回复?!
有什么想法吗?感谢
答案 0 :(得分:18)
我遇到了同样的问题...虽然它没有在复制的代码中显示,但请检查以确保您没有 ClientIDMode = Static 中的任何控件updatepanel ....让他们继承
至少可能触发回发的任何控件
答案 1 :(得分:5)
您的下拉列表中AutoPostBack
设置为true
。这就是为什么你要回帖而不是AsyncPostBack
,如果这是你想要的。
从下拉列表中删除AutoPostBack=true
并为您的UpdatePanel设置一个Async
触发器设置到下拉列表及其eventname="SelectedIndexChanged"
答案 2 :(得分:4)
我有同样的问题...
检查您的WEB.CONFIG
<xhtmlConformance mode="Legacy"/>
这条线..并且只是删除它!!
答案 3 :(得分:2)
请原谅我缺乏编程技巧:|这一切都在一直有效,但是因为其中一个动作页面“看起来”像是POST POSTED,而不是。多么可惜!!!
抱歉你的时间过去了!
答案 4 :(得分:2)
如果你有一些Autopostback="true"
和ClientIdMode="Static"
的asp组件,你必须使用触发器。
像这样:
<asp:UpdatePanel ID="upPrinceOffuce" runat="server">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="ddlPrintOffice" EventName="SelectedIndexChanged" />
</Triggers>
<ContentTemplate>
<asp:DropDownList ID="ddlPrintOffice" runat="server" ClientIDMode="Static" AutoPostBack="true" ...blah blah
</asp:DropDownList>
</ContentTemplate>
</asp:UpdatePanel>
答案 5 :(得分:1)
如何绑定DropDown?您提供的代码在我身边使用静态项目。也许它是导致问题的其他控件中的某些东西。
我注意到你的UpdatePanel将其UpdateMode属性设置为条件,但是你没有定义任何触发器。当你的下拉列表触发其selectedIndexChanged事件时,你可以尝试显式设置更新面板应该执行异步回发。您可以使用以下标记:
<asp:UpdatePanel ID="upMain" runat="server" UpdateMode="Conditional" Visible="true"
RenderMode="Inline">
<ContentTemplate>
<asp:DropDownList ID="ddlNewService_PortTelco" runat="server" Width="250"
AutoPostBack="true" OnSelectedIndexChanged="Provision_PortedTelcoChanged">
</asp:DropDownList>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="ddlNewService_PortTelco" EventName="SelectedIndexChanged" />
</Triggers>
</asp:UpdatePanel>
答案 6 :(得分:1)
将AutoPostBack属性设置为true应足以导致部分回发,但不会发生这种情况,而是按正确描述的方式触发完整的回发。
以下解决方法适用于我:
这是原始DropDownList的样子:
<asp:DropDownList ID="ddlNewService_PortTelco" runat="server" Width="250" CssClass="dropdown" OnChange="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(this.name, '', true, '', '', false, true))" OnSelectedIndexChanged="Provision_PortedTelcoChanged"></asp:DropDownList>
有关WebForm_PostBackOptions参数的更多详细信息,请参阅以下内容:
function WebForm_PostBackOptions(eventTarget, eventArgument, validation, validationGroup, actionUrl, trackFocus, clientSubmit)
http://msdn.microsoft.com/en-us/library/system.web.ui.postbackoptions_members(v=VS.90).aspx
答案 7 :(得分:0)
当Dropdownlist Autopostback属性设置为true时会出现同样的问题 并通过将下拉列表ID添加到updatepanel触发器
来解决问题答案 8 :(得分:0)
我有这个问题。我的Dropdownlist在HTML表格中,我的更新面板包含两个单独的行。我通过将更新面板包裹在整个表而不是仅仅两行来修复问题。
答案 9 :(得分:0)
解决此问题的另一种方法是:
声明库
using AjaxControlToolkit;
然后你可以在这些方面做点什么
private void InitControl()
{
//FIX - DROP DOWN
ToolkitScriptManager scrManager = (ToolkitScriptManager)Page.Master.Controls[0].Controls[0].FindControl("manScript");
scrManager.RegisterAsyncPostBackControl(ddlNewService_PortTelco);
}
答案 10 :(得分:0)
将AutoID值设置为ClientIDMode属性。它对我有用。我在不同的浏览器(即Google Chrome和Firefox)中有不同的行为。