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

本文关键字:更新 NET 网格 视图 ASP | 更新日期: 2023-09-27 18:35:56

背景:尝试避免完全回发并使用部分回发来刷新数据网格。我已经检查了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 数据行)上的服务器。但数据网格不会刷新。我确实打电话给网格。DataBind() 在异步回发期间。有人知道发生了什么吗?我错过了什么吗?

注意:一切都适用于普通 ASP.Net 控件,只是不适用于 AJAX 文件上传控件

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

您是否在SetGridData中调用GridViewDataBind()方法?并添加一个AsyncPostBackTrigger

在这里看一个例子

试试 更新模式="总是" . 它会工作