RadGrid中的BLOB检索

时间:2011-08-02 20:22:55

标签: c# telerik dotnetnuke blob radgrid

我对使用Telerik控件非常陌生,而且我在Telerik论坛上收到的回复为零,但朋友推荐了Stackoverflow,所以我希望有人可以提供帮助。

简而言之,我是一名.NET程序员,目前正在开发在DotNetNuke中使用的模块。对于我目前正在处理的模块,我在Telerik RadGrid中显示数据。我的一个列包含一个LinkBut​​ton,当它被点击时需要运行一个从我的数据库中检索BLOB并打开pdf文件的函数。

我使用GridView在.NET测试环境中工作。这是我的OnClick事件的代码:

public void lnkWebFileName_Click(object sender, EventArgs e)
{
   Label lblWebFileNameNew = (Label)((Control)sender).NamingContainer.FindControl
   ("lblWebFileName");
   string webfilename = lblWebFileNameNew.Text.ToString();
   BlobRetrieval.WriteDocumentWithStreaming(webfilename);
}

我没有包含WriteDocumentWithStreaming的代码,因为在.NET中它就像一个魅力,所以我知道我的检索代码是有效的。

然而,尝试通过我的RadGrid使其工作是另一个问题。出于测试目的,我使用以下代码来确保我获取webfilename值,然后更改按钮文本:

public void lnkWebFileName_Click(object sender, EventArgs e)
{
   Label lblWebFileNameNew = (Label)((Control)sender).NamingContainer.FindControl  
   ("lblWebFileName");
   LinkButton lnkBtn = (LinkButton)((Control)sender).NamingContainer.FindControl
   ("lnkWebFileName");
   string webfilename = lblWebFileNameNew.Text.ToString();
   lnkBtn.Text = webfilename;
}

完美的作品!问题是当我添加:

BlobRetrieval.WriteDocumentWithStreaming(webfilename);

尝试显示pdf文件,它什么都不做。我检查了DNN的EventViewer,我得到的唯一错误信息是:

System.Exception: Unhandled Error

有没有人知道如何通过RadGrid检索和显示BLOB?我是否必须对现有代码执行一些特殊操作,或者是否需要在RadGrid中执行某些特定操作?

有人请帮助摆脱这种头痛。谢谢!

MKDnn

2 个答案:

答案 0 :(得分:1)

我首先想到的是Telerik和/或DNN将使用部分回发(UpdatePanels),因此您可以尝试向脚本管理器注册LinkBut​​tons以避免使用它们,尝试进行部分回发(赢得了'当你需要将文件发送到客户端时工作)。您可以通过DotNetNuke.Framework.AJAX.RegisterPostBackControl在DNN中执行此操作。

您还可以尝试在try / catch块中包装事件处理程序,并调用DotNetNuke.Services.Exceptions.Exceptions.ProcessModuleLoadException以获取有关事件日志中异常的更多详细信息。

答案 1 :(得分:0)

我知道很多 RadGrid 控件都依赖于页面上的 RadAjaxManager 以及母版页中的脚本管理器,以便网格执行其许多功能。我不确定你的代码中是否有这些。

    <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server">
    <AjaxSettings>
        <telerik:AjaxSetting AjaxControlID="ConfigurationPanel1">
            <UpdatedControls>
                <telerik:AjaxUpdatedControl ControlID="containerDiv" LoadingPanelID="RadAjaxLoadingPanel1"></telerik:AjaxUpdatedControl>
                <telerik:AjaxUpdatedControl ControlID="ConfigurationPanel1"></telerik:AjaxUpdatedControl>
            </UpdatedControls>
        </telerik:AjaxSetting>
    </AjaxSettings>
</telerik:RadAjaxManager>