我对使用Telerik控件非常陌生,而且我在Telerik论坛上收到的回复为零,但朋友推荐了Stackoverflow,所以我希望有人可以提供帮助。
简而言之,我是一名.NET程序员,目前正在开发在DotNetNuke中使用的模块。对于我目前正在处理的模块,我在Telerik RadGrid中显示数据。我的一个列包含一个LinkButton,当它被点击时需要运行一个从我的数据库中检索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
答案 0 :(得分:1)
我首先想到的是Telerik和/或DNN将使用部分回发(UpdatePanels),因此您可以尝试向脚本管理器注册LinkButtons以避免使用它们,尝试进行部分回发(赢得了'当你需要将文件发送到客户端时工作)。您可以通过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>