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

时间:2016-02-23 03:52:10

标签: c# asp.net asp.net-ajax updatepanel aspxgridview

背景 试图避免完整的回发并使用部分回发来刷新数据网格。我已经检查了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文件上传控件

2 个答案:

答案 0 :(得分:1)

您是否在DataBind()内调用了GridView的{​​{1}}方法?并添加SetGridData

查看示例here

答案 1 :(得分:0)

尝试UpdateMode =“始终”。它会起作用