I have a couple of grids on tabs for each row of a grid in a nested view. The code-behind opens the first record to view the first item. At this point, I can click on the link to download my attachment, but it only works the first time. After that, it hangs and I can't figure out why.
If you can figure out what I need to correct, it would be a tremendous help!
I've created a mini-project that demonstrates the problem. I've substituted 2 XML files for data sources, but, for this demo, the attachment is hard-coded. (It's using a PDF.)
XML File 1:
XML File 2:
If you can figure out what I need to correct, it would be a tremendous help!
I've created a mini-project that demonstrates the problem. I've substituted 2 XML files for data sources, but, for this demo, the attachment is hard-coded. (It's using a PDF.)
<%@ Page Language="C#" %>
<%@ Register assembly="Telerik.Web.UI" namespace="Telerik.Web.UI" tagprefix="telerik" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
script
runat
=
"server"
>
protected void DownloadForShot_ImageButton_Click(object sender, System.Web.UI.ImageClickEventArgs e)
{
ImageButton btnDownload = (ImageButton)sender;
GridDataItem dataItem = (GridDataItem)btnDownload.NamingContainer;
RadGrid Attachments_RadGrid = (RadGrid)dataItem.NamingContainer.NamingContainer;
Label lblShotID =(Label)Attachments_RadGrid.NamingContainer.FindControl("ShotID_Label");
try
{
//NOTE THE HARD CODED VALUE HERE
System.IO.FileInfo file = new System.IO.FileInfo("C:\\inetpub\\wwwroot\\TestSite\\Images\\TestPDF.pdf");
if (file.Exists)
{
Response.ClearContent();
Response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}", file.Name));
Response.AddHeader("Content-Length", file.Length.ToString());
Response.ContentType = "application/pdf"; // "image/jpeg"
Response.TransmitFile(file.FullName);
HttpContext.Current.ApplicationInstance.CompleteRequest();
}
else
{
throw new Exception("There is no attachment for this path or the path is not valid.");
}
}
catch (Exception ex)
{
Response.Write("<
span
style
=
'color:red;'
>" + ex.Message + "</
span
>");
}
}
protected void ShotDetail_RadGrid_PreRender(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
if (ShotDetail_RadGrid.MasterTableView.Items.Count > 0)
{
ShotDetail_RadGrid.MasterTableView.Items[0].Expanded = true;
ShotDetail_RadGrid.MasterTableView.Items[0].ChildItem.FindControl("InnerContainer").Visible = true;
}
}
}
</
script
>
<
html
xmlns
=
"http://www.w3.org/1999/xhtml"
>
<
head
runat
=
"server"
>
<
title
>Title</
title
>
</
head
>
<
body
>
<
form
id
=
"form1"
runat
=
"server"
>
<
div
>
<
div
id
=
"div_Shots_ShotDetail"
style
=
"width:99%; height:1500px; position:absolute;"
>
<
telerik:RadGrid
ID
=
"ShotDetail_RadGrid"
runat
=
"server"
DataSourceID
=
"XmlDataSource1"
AllowPaging
=
"True"
Skin
=
"Hay"
GridLines
=
"None"
ShowStatusBar
=
"True"
Width
=
"921px"
onprerender
=
"ShotDetail_RadGrid_PreRender"
>
<
HierarchySettings
ExpandTooltip
=
"Show related merch"
CollapseTooltip
=
"Collapse merch"
></
HierarchySettings
>
<
ExportSettings
IgnorePaging
=
"True"
>
<
Pdf
PageBottomMargin
=
"0.5in"
PageHeight
=
"8.5in"
PageLeftMargin
=
"0.35in"
PageRightMargin
=
"0.35in"
PageTopMargin
=
"0.5in"
PageWidth
=
"11in"
/>
</
ExportSettings
>
<
ClientSettings
AllowColumnsReorder
=
"True"
ReorderColumnsOnClient
=
"True"
>
<
Selecting
AllowRowSelect
=
"True"
></
Selecting
>
<
Scrolling
AllowScroll
=
"True"
UseStaticHeaders
=
"True"
/>
</
ClientSettings
>
<
MasterTableView
DataSourceID
=
"XmlDataSource1"
AutoGenerateColumns
=
"False"
AllowCustomPaging
=
"True"
>
<
NestedViewTemplate
>
<
asp:Panel
runat
=
"server"
ID
=
"InnerContainer"
CssClass
=
"viewWrap"
Visible
=
"false"
>
<
telerik:RadTabStrip
runat
=
"server"
ID
=
"TabStip1"
MultiPageID
=
"Multipage1"
SelectedIndex
=
"0"
Width
=
"884px"
>
<
Tabs
>
<
telerik:RadTab
runat
=
"server"
Text
=
"Attachments"
PageViewID
=
"PageView2"
Selected
=
"True"
>
</
telerik:RadTab
>
</
Tabs
>
</
telerik:RadTabStrip
>
<
telerik:RadMultiPage
runat
=
"server"
ID
=
"Multipage1"
SelectedIndex
=
"0"
RenderSelectedPageOnly
=
"false"
>
<
telerik:RadPageView
runat
=
"server"
ID
=
"PageView1"
>
<
asp:Label
ID
=
"ShotID_Label"
runat
=
"server"
Text='<%# Eval("ShotID") %>' Visible="false" />
<
asp:Label
ID
=
"Error_Label"
runat
=
"server"
></
asp:Label
>
<
telerik:RadGrid
ID
=
"Attachments_RadGrid"
runat
=
"server"
DataSourceID
=
"XmlDataSource2"
GridLines
=
"None"
>
<
MasterTableView
AutoGenerateColumns
=
"False"
DataSourceID
=
"XmlDataSource2"
>
<
CommandItemSettings
ExportToPdfText
=
"Export to PDF"
/>
<
RowIndicatorColumn
FilterControlAltText
=
"Filter RowIndicator column"
>
<
HeaderStyle
Width
=
"20px"
/>
</
RowIndicatorColumn
>
<
ExpandCollapseColumn
FilterControlAltText
=
"Filter ExpandColumn column"
>
<
HeaderStyle
Width
=
"20px"
/>
</
ExpandCollapseColumn
>
<
Columns
>
<
telerik:GridTemplateColumn
UniqueName
=
"ColumnDownload"
>
<
ItemTemplate
>
<
telerik:RadAjaxPanel
ID
=
"RadAjaxPanel1"
runat
=
"server"
>
<
asp:ImageButton
ID
=
"DownloadForShot_ImageButton"
runat
=
"server"
ImageUrl
=
"~/Images/view.gif"
OnClick
=
"DownloadForShot_ImageButton_Click"
/>
</
telerik:RadAjaxPanel
>
</
ItemTemplate
>
</
telerik:GridTemplateColumn
>
<
telerik:GridBoundColumn
DataField
=
"AttachmentTitle"
HeaderText
=
"Attachments"
UniqueName
=
"ColumnAttachment"
>
</
telerik:GridBoundColumn
>
</
Columns
>
<
EditFormSettings
>
<
EditColumn
FilterControlAltText
=
"Filter EditCommandColumn column"
>
</
EditColumn
>
</
EditFormSettings
>
</
MasterTableView
>
<
FilterMenu
EnableImageSprites
=
"False"
>
</
FilterMenu
>
<
HeaderContextMenu
CssClass
=
"GridContextMenu GridContextMenu_Default"
>
</
HeaderContextMenu
>
</
telerik:RadGrid
>
<
asp:XmlDataSource
ID
=
"XmlDataSource2"
runat
=
"server"
DataFile
=
"~/XMLFile2.xml"
></
asp:XmlDataSource
>
</
telerik:RadPageView
>
<
telerik:RadPageView
Runat
=
"server"
Width
=
"100%"
ID
=
"PageView2"
>
</
telerik:RadPageView
>
</
telerik:RadMultiPage
>
</
asp:Panel
>
</
NestedViewTemplate
>
<
CommandItemSettings
ExportToPdfText
=
"Export to Pdf"
></
CommandItemSettings
>
<
RowIndicatorColumn
FilterControlAltText
=
"Filter RowIndicator column"
></
RowIndicatorColumn
>
<
ExpandCollapseColumn
Visible
=
"True"
></
ExpandCollapseColumn
>
<
Columns
>
<
telerik:GridBoundColumn
DataField
=
"ShotID"
HeaderText
=
"ShotID"
UniqueName
=
"ShotID"
FilterControlAltText
=
"Filter ShotID column"
SortExpression
=
"ShotID"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"JobNumber"
HeaderText
=
"JobNumber"
UniqueName
=
"JobNumber"
FilterControlAltText
=
"Filter JobNumber column"
SortExpression
=
"JobNumber"
>
</
telerik:GridBoundColumn
>
</
Columns
>
<
EditFormSettings
>
<
EditColumn
FilterControlAltText
=
"Filter EditCommandColumn column"
></
EditColumn
>
</
EditFormSettings
>
<
PagerStyle
AlwaysVisible
=
"True"
/>
</
MasterTableView
>
<
PagerStyle
AlwaysVisible
=
"True"
/>
<
FilterMenu
EnableImageSprites
=
"False"
></
FilterMenu
>
<
HeaderContextMenu
EnableImageSprites
=
"True"
CssClass
=
"GridContextMenu GridContextMenu_Default"
></
HeaderContextMenu
>
</
telerik:RadGrid
>
<
asp:XmlDataSource
ID
=
"XmlDataSource1"
runat
=
"server"
DataFile
=
"~/XMLFile.xml"
></
asp:XmlDataSource
>
<
telerik:RadScriptManager
ID
=
"RadScriptManager1"
runat
=
"server"
></
telerik:RadScriptManager
>
</
div
>
</
div
>
</
form
>
</
body
>
</
html
>
XML File 1:
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
<
tables
>
<
tShots
ShotID
=
"15736"
JobNumber
=
"254960"
/>
<
tShots
ShotID
=
"15737"
JobNumber
=
"254960"
/>
<
tShots
ShotID
=
"15738"
JobNumber
=
"254960"
/>
<
tShots
ShotID
=
"15739"
JobNumber
=
"254960"
/>
<
tShots
ShotID
=
"15740"
JobNumber
=
"254960"
/>
<
tShots
ShotID
=
"15741"
JobNumber
=
"254960"
/>
</
tables
>
XML File 2:
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
<
tables
>
<
tAttachments
ShotID
=
"14394"
AttachmentExtension
=
".jpg"
AttachmentPath
=
"~/images/Image1/file1.jpg"
AttachmentTitle
=
"File Name 1"
/>
<
tAttachments
ShotID
=
"15737"
AttachmentExtension
=
".jpg"
AttachmentPath
=
"~/images/Image1/file2.jpg"
AttachmentTitle
=
"File Name 2"
/>
<
tAttachments
ShotID
=
"15738"
AttachmentExtension
=
".jpg"
AttachmentPath
=
"~/images/Image1/file3.jpg"
AttachmentTitle
=
"File Name 3"
/>
<
tAttachments
ShotID
=
"15739"
AttachmentExtension
=
".jpg"
AttachmentPath
=
"~/images/Image1/file4.jpg"
AttachmentTitle
=
"File Name 4"
/>
<
tAttachments
ShotID
=
"15740"
AttachmentExtension
=
".jpg"
AttachmentPath
=
"~/images/Image1/file5.jpg"
AttachmentTitle
=
"File Name 5"
/>
</
tables
>