繁体   English   中英

ASP.NET网格视图未在更新面板内更新

[英]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调用GridViewDataBind()方法? 并添加一个AsyncPostBackTrigger

这里看看一个例子

尝试UpdateMode =“ Always”。 它会工作

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM