![](/img/trans.png)
[英]ASP.NET - Enabling button by reading data in Grid View inside Update Panel
[英]ASP.NET Grid View not updating inside an update panel
背景:尝试避免完全回发,并使用部分回发来刷新数据网格。 我已经检查了MSDN,并且堆栈溢出并尝试了不同的控制值组合来触发回发,但是没有运气。
码
<asp:ScriptManager ID="sm1" runat="server" EnablePartialRendering="true" />
<div>
<asp:UpdatePanel ID="upTest" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="true" >
<ContentTemplate>
<asp:GridView ID="gvTest" runat="server" Visible="true" ShowHeader="true" AutoGenerateColumns="false">
<Columns>
<asp:TemplateField>
<HeaderTemplate>
<div>Document Type</div>
</HeaderTemplate>
<ItemTemplate>
<asp:Label ID="txtDescription" Style="margin: 2px" MaxLength="254" Text='<%# Bind("DocName") %>' runat="server" Width="200px" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<br />
<label>
<AjaxControlToolkit:AsyncFileUpload ID="AsyncFileUpload1" Width="400px" runat="server"
OnUploadedComplete="AsyncFileUpload1_UploadedComplete" />
</label>
<label id="lblStatus"></label>
</ContentTemplate>
</asp:UpdatePanel>
</div>
后面的代码
if (AsyncFileUpload1.HasFile)
{
string strPath = MapPath("~/Uploads/") + Path.GetFileName(e.filename);
AsyncFileUpload1.SaveAs(strPath);
SetGridData(1);
upTest.Update();
}
private void SetGridData(int count)
{
List<Document> Documents = new List<Document>();
Document doc = new Document();
doc.DocName = "test doc";
for (int i = 0; i < count; i++)
{
Documents.Add(doc);
}
gvTest.DataSource = Documents;
gvTest.DataBind();
}
在Page_Load上,网格将加载5个数据行,而在异步发布后,网格将重置为一个数据行。 在查看chrome调试器时,我可以看到网格数据既来自Page_Load(5行)又是异步负载(1个数据行)上的服务器。 但是不会刷新数据网格。 我确实在异步回发期间调用grid.DataBind()。 任何人有任何想法怎么回事? 我想念什么吗?
注意:一切都可与常规ASP.Net控件一起使用,只是不能与AJAX文件上传控件一起使用
您是否在SetGridData
调用GridView
的DataBind()
方法? 并添加一个AsyncPostBackTrigger
在这里看看一个例子
尝试UpdateMode =“ Always”。 它会工作
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.