UpdatePanel 和 ListView 控件不显示来自 BLOB 的数据

Posted

技术标签:

【中文标题】UpdatePanel 和 ListView 控件不显示来自 BLOB 的数据【英文标题】:UpdatePanel and ListView control do not show data from BLOB 【发布时间】:2019-08-01 19:49:13 【问题描述】:

我正在尝试从 Azure Blob 填充数据(带有超链接的文件名)。

这是我的代码:

更新面板:

<asp:UpdatePanel ID="up1" runat="server" UpdateMode="Conditional">
    <ContentTemplate>
        <asp:Button ID="refreshButton" runat="server" Text="Refresh" OnClick="refreshButton_Click" />
        <asp:ListView ID="fileDisplayControl" runat="server">
            <LayoutTemplate>
                <asp:Hyperlink ID="itemPlaceholder" runat="server" />
            </LayoutTemplate>
            <ItemTemplate>
                <asp:Hyperlink ID="filehyperlink" runat="server" NavigateUrl='<%# Eval("Url") %>' /> 
            </ItemTemplate>
        </asp:ListView>
    </ContentTemplate>
</asp:UpdatePanel>

在 Listview 中,我放置了 HYperlink 控件,其中数据填充有超链接。

向 Listview 控件提供数据源的代码:

private CloudBlobContainer getfileGalleryContainer()

    return _blobStorageService.getCloudBlobContainer();


protected void Page_PreRender(object sender, EventArgs e)

    try
    
        // Blob container that contains the ppp
        // Perform a query of the its contents and return the list of all of the blobs whose name begins with the string "ppp". 
        // It returns an enumerator of their URLs and place that enumerator into list view as its data source. 

        fileDisplayControl.DataSource = 
            from o in getfileGalleryContainer().GetDirectoryReference("ppp").ListBlobs()
            select new  Url = o.Uri ;

        // List view to bind to its data source
        fileDisplayControl.DataBind();
    
    catch (Exception)
    
    

不幸的是,即使文件存储在 ppp blob 中,也没有填充任何内容。

有人请告诉我这个过程有什么问题吗?

【问题讨论】:

你检查有没有exceptions 不要出现任何异常。 Web-job 正在运行并生成文件,但没有任何结果 如果这是真实的代码,你不会看到异常,因为catch(Exception) 去掉try/catch,再试一次。 它无法在本地 Blob 中创建任何内容,这可能是一个原因。即使它在 Azure 中发布并运行,它也会在 Azure 存储 blob 中创建文件,但不会在 LIstview 中返回任何内容。它没有显示任何错误令人惊讶 【参考方案1】:

你的问题太笼统了。您必须逐步检查您的问题是什么:

protected void Page_PreRender(object sender, EventArgs e)

    var checkMe1 = _blobStorageService.getCloudBlobContainer();
    var checkMe2 = checkMe1.GetDirectoryReference("ppp");
    var cehckMe3 = checkMe2.ListBlobs();
    var checkMe4 = from o in cehckMe3
                    select new  Url = o.Uri .ToList();

    fileDisplayControl.DataSource = checkMe4;

    // List view to bind to its data source
    fileDisplayControl.DataBind();

【讨论】:

以上是关于UpdatePanel 和 ListView 控件不显示来自 BLOB 的数据的主要内容,如果未能解决你的问题,请参考以下文章

通过Ajax来简单的实现局部刷新(主要为C#中使用的UpdatePanel控件和ScriptManager控件)

ScriptManager和UpdatePanel用法 (ajax)

UpdatePanel 中的 JavaScript 代码

ASP.NET使用UpdatePanel实现AJAX

从 UpdatePanel Asp.Net 中排除控件

如何根据驻留在 updatePanel 中的 DataGrid 中所做的行选择来更新控件 [DataGrid、TextBoxes 和标签]?