我有一个更新面板,在更新面板中我有文件上载控件和按钮控件,单击按钮,我需要在updatepanel中的fileupload控件中上传的文件.
确切的情况,我有第8个标签,每个标签包含了太多的信息,其中一个选项卡是附件,当添加呈现出新的附件模式弹出的用户点击,莫代尔包含的UpdatePanel和我都FileUpload控件在DetailsView DetailsView控件,当用户点击保存按钮,detailsview插入事件触发,在插入事件中我需要我上传的文件.
请注意,我的页面很重,我不想要完整的postBack.
有没有人有这个问题的解决方案?
感谢您的帮助......
问题死硬asp.net专家.我花了很多时间试图找到答案或自己做,但到目前为止没有运气.
ASP.NET Web应用程序.我计划改善页面加载时间,以便更好地体验用户体验.我想使用UpdatePanels延迟页面的加载部分.我可以使用最小间隔的计时器在页面加载后立即进行一次UpdatePanel更新.这工作正常,但尝试使用多个UpdatePanel完成步骤时开始步骤.基本上所发生的是所有面板都是更新但是顺序而不是同时更新.
现在,我已经读到这是因为每个异步回发结果都会导致整页页面视图状态,并且为防止视图状态不一致,异步回发被序列化.实际上他们说只有最后一次回调会成功,所以我很幸运能将它们序列化,我猜.
而现在最大的问题是:有人找到了解决方法吗?在ASP.NET中尽可能.这可能是一个非常有价值的答案,可能不仅对我而言.
谢谢,谢谢,谢谢(工作回答:-)
我有一个DataList,它绑定了一个People集合,每个Person都有一个Button,点击时需要导致异步回发,因此OnClick事件处理程序可以更改UpdatePanel中显示的详细信息[DataList在UpdatePanel之外].
我已经两次尝试设置Button来更改DataList的OnItemDataBound事件处理程序中的UpdatePanel.一个将AsyncPostBackTrigger分配给UpdatePanel,另一个分配给RegisterAsyncPostBackControl到ScriptManager.两者都有效但只是第一次.如果按下另一个人的按钮[或第二次按下相同的按钮],页面将完全回发.
UpdatePanel的UpdateMode设置为Conditional,ScriptManager的EnablePartialRenderingEnablePartialRendering设置为true.
OnItemDataBound中的代码:
Button btnShowNotes = e.Item.FindControl( "btnShowNotes" ) as Button;
// Trigger
AsyncPostBackTrigger trigger = new AsyncPostBackTrigger();
trigger.ControlID = btnShowNotes.UniqueID;
trigger.EventName = "Click";
upDetails.Triggers.Add( trigger ); // UpdatePanel
// The trigger or this is used, not both
ScriptManager1.RegisterAsyncPostBackControl( btnShowNotes );
Run Code Online (Sandbox Code Playgroud)
一旦发生了第一个Async PostBack,它似乎失去了引用,但是肯定可以保持这个而不必不断地重新绑定DataList?我必须在尝试这种方式时遗漏一些东西.
在ASP.NET 4.0 Web应用程序中,我有一个由UpdatePanel包装的用户控件(请参阅下面的代码).
<asp:UpdatePanel ID="UpdatePanel5" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<UC:MyCustomCtrl ID="customCtrl" runat="server" />
</ContentTemplate>
</asp:UpdatePanel>
Run Code Online (Sandbox Code Playgroud)
显然,这适用于在我的用户控件中导致回发的每个ASP.NET控件,因为它使它异步发生.但是,有一个过程不起作用!
我在用户控件中有一个ASP.NET按钮(Create Report),它向服务器发出异步请求.然后,服务器创建一个Excel电子表格,然后将电子表格放入HttpResponse以发送回客户端的浏览器,以便他们可以打开/保存它.但是,它在这一点上爆炸,因为对服务器的请求是异步的,显然你不能在异步请求期间在HttpResponse中放入二进制文件.
我该如何解决这个问题?
我在asp:net中使用AJAX,并且我正在尝试处理一种情况:asp:按钮同时触发javascript方法和codebehind c#方法.为此,我使用按钮的onclick和onClientClick属性.我需要回调才能调用codebehind但是这个回发会导致javascript无法工作,因为变量已经丢失状态.任何人都可以描述如何处理这个?可能与ajax和异步回发?它开始让我有点疯狂!
编辑:javascript实际上是google-map(v3),c#代码用于提交给sql db.
地图在代码隐藏中初始化:
protected void Page_Load(object sender, EventArgs e)
{
if(!Page.IsPostBack) {
ScriptManager.RegisterStartupScript(this, this.GetType(), "onload", "initialize_map();", true);
submitButton.Command += new CommandEventHandler(this.submitButton_Click);
}
}
Run Code Online (Sandbox Code Playgroud)
以下是一些相关代码:
<asp:UpdatePanel runat="server" ID="Form" UpdateMode="Conditional">
<ContentTemplate>
(...form stuff...)
<asp:Button ID="submitButton" runat="server" Text="Submit" ValidationGroup="NewCallFormSubmit" OnClientClick="calcRoute(); return false;" onclick="submitButton_Click" />
</ContentTemplate>
</UpdatePanel>
<asp:UpdatePanel runat="server" ID="DisplayUpdatePanel" UpdateMode="Conditional">
<ContentTemplate>
<h1>
Pick-Up and Drop-Off Locations
</h1>
<!-- Map Layout -->
<div id="map_canvas" style="width: 500px; height: 500px;"></div>
</ContentTemplate>
</asp:UpdatePanel>
Run Code Online (Sandbox Code Playgroud)
...我认为如果我可以让第一个更新面板在按钮点击上回发,第二个面板不回发,并且仍然可以调用代码隐藏按钮.到目前为止,这一切都没有运气同时发生.
我试图获得一个cbxSupplement触发器updatepanel刷新,但我不确定我是否使用了错误EventName或者它是不可能的CheckBox.如果我更换CheckBox用Button,它工作正常.
<asp:Repeater ID="repSupplements" runat="server">
<ItemTemplate>
<asp:CheckBox runat="server" ID="cbxSupplement" />
</ItemTemplate>
</asp:Repeater>
<asp:UpdatePanel runat="server" ID="up1">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="repSupplements" EventName="CheckedChanged" />
</Triggers>
<ContentTemplate>
//Get checked items
</ContentTemplate>
</asp:UpdatePanel>
Run Code Online (Sandbox Code Playgroud) 下面是标记页面
<asp:UpdatePanel runat="server" UpdateMode="Conditional">
<ContentTemplate>
<table>
<tr>
<td>
<label>File name<label>
</td>
</tr>
<tr>
<td>
<asp:TextBox runat="server" ID="txtName" Width="150%"></asp:TextBox>
</td>
</tr>
<tr>
<td>
<label>File</label>
</td>
<td>
<asp:FileUpload runat="server" ID="fileUpload" />
</td>
</tr>
</table>
<asp:Button runat="server" ID="btnUpload" Text="Upload file" OnClick="btnUpload_Click" />
</div>
<div class="panel-heading">File display</div>
<div class="panel-body">
<asp:GridView runat="server">
</asp:GridView>
<asp:Button runat="server" ID="btnRefresh" Text="Refresh" OnClick="btnRefresh_Click" />
</div>
</div>
</ContentTemplate>
<Triggers>
<asp:PostBackTrigger ControlID="btnUpload" />
</Triggers>
</asp:UpdatePanel>
Run Code Online (Sandbox Code Playgroud)
与上面的代码,当用户点击"btnUpload",就会有一个回,但有一个更新面板,以防止后回来,当我改变了PostBackTrigger到AsyncPostBackTrigger,页面没有贴背,但fileUpload.HasFile将为false并且无法获取该文件.
上面的代码出了什么问题?为什么postBackTrigger会触发回发帖?
asp.net ×6
c# ×3
ajax ×2
file-upload ×2
postback ×2
updatepanel ×2
asp.net-ajax ×1
repeater ×1
webforms ×1