Hi,
I have a RadGrid with a GridAttachmentColumn. I created a test page and everything is working fine locally.
When I publish to a remote server, everything appears ok (attachments are retrieved, displayed and downloadable) but when I click "Add New Record" and click the file upload browse button, nothing happens. No script or server error, no UI response, nothing.
What can be going wrong?
Here's some code showing what I have. It works fine debugging using VS2010 built-in web server. I've necessarilly had to cut some of the code out.
Master Page
Content Page
Content Page Code-Behind
That's all the important stuff. Like I said, works fine locally.
Richard
I have a RadGrid with a GridAttachmentColumn. I created a test page and everything is working fine locally.
When I publish to a remote server, everything appears ok (attachments are retrieved, displayed and downloadable) but when I click "Add New Record" and click the file upload browse button, nothing happens. No script or server error, no UI response, nothing.
What can be going wrong?
Here's some code showing what I have. It works fine debugging using VS2010 built-in web server. I've necessarilly had to cut some of the code out.
Master Page
<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="SiteMaster.Master.cs" Inherits="MyNamespace.MyMasterPages.SiteMaster" %> <%@ 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"> <html xmlns="http://www.w3.org/1999/xhtml"> <head id="Header" runat="server" lang="en-au"> <title>Test</title> <asp:ContentPlaceHolder ID="HeadContentPlaceHolder" runat="server"> </asp:ContentPlaceHolder> </head> <body> <form id="MainForm" runat="server"> <telerik:RadScriptManager ID="TelerikScriptManager" runat="server"> <CompositeScript> <Scripts> <%--Needed for JavaScript IntelliSense in VS2010--%> <asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.Core.js" /> <asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.jQuery.js" /> <asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.jQueryInclude.js" /> </Scripts> </CompositeScript> </telerik:RadScriptManager> <asp:ContentPlaceHolder ID="ScriptContentPlaceHolder" runat="server"> </asp:ContentPlaceHolder> <telerik:RadAjaxManager ID="TelerikAjaxManager" runat="server"> <AjaxSettings> <telerik:AjaxSetting AjaxControlID="MainUpdatePanel"> <UpdatedControls> <telerik:AjaxUpdatedControl ControlID="MainUpdatePanel" LoadingPanelID="TelerikAjaxLoadingPanel" /> </UpdatedControls> </telerik:AjaxSetting> </AjaxSettings> </telerik:RadAjaxManager> <telerik:RadWindowManager ID="TelerikWindowManager" runat="server"> </telerik:RadWindowManager> <telerik:RadSkinManager ID="TelerikSkinManager" Runat="server" Skin="Telerik"> </telerik:RadSkinManager> <telerik:RadFormDecorator ID="TelerikFormDecorator" Runat="server" Skin="Telerik" DecoratedControls="All" /> <telerik:RadAjaxPanel ID="MainUpdatePanel" runat="server"> <asp:ContentPlaceHolder ID="MainContentPlaceHolder" runat="server"> </asp:ContentPlaceHolder> </telerik:RadAjaxPanel> <telerik:RadAjaxLoadingPanel ID="TelerikAjaxLoadingPanel" runat="server"> </telerik:RadAjaxLoadingPanel> </form> </body> </html>Content Page
<%@ Page Title="Attachments Test" Language="C#" MasterPageFile="~/MyMasterPages/SiteMaster.Master" AutoEventWireup="true" CodeBehind="Attachments.aspx.cs" Inherits="MyNamespace.Attachments" %> <%@ MasterType VirtualPath="~/MyMasterPages/SiteMaster.Master" %> <asp:Content ID="ScriptContent" ContentPlaceHolderID="ScriptContentPlaceHolder" runat="server"> <telerik:RadCodeBlock ID="TelerikCodeBlock" runat="server"> <script type="text/javascript"> function ConditionalPostback(sender, args) { var eventTarget = args.get_eventTarget(); if (eventTarget == "<%=this.AttachmentsGrid.UniqueID %>") { args.set_enableAjax(false); } } function GridOnCommand(sender, args) { if (args.get_commandName() == "DownloadAttachment") { var manager = $find('<%= RadAjaxManager.GetCurrent(Page).ClientID %>'); manager.set_enableAJAX(false); setTimeout(function () { manager.set_enableAJAX(true); }, 0); } } </script> </telerik:RadCodeBlock> </asp:Content> <asp:Content ID="Content3" ContentPlaceHolderID="MainContentPlaceHolder" runat="server"> <telerik:RadGrid AutoGenerateColumns="False" AutoGenerateDeleteColumn="True" AutoGenerateEditColumn="True" DataSourceID="AttachmentsDataSource" ID="AttachmentsGrid" OnDeleteCommand="AttachmentsGrid_OnCommand" OnInsertCommand="AttachmentsGrid_OnCommand" OnItemCommand="AttachmentsGrid_OnItemCommand" OnUpdateCommand="AttachmentsGrid_OnCommand" runat="server"> <MasterTableView DataKeyNames="Id" DataSourceID="AttachmentsDataSource"> <Columns> <telerik:GridBoundColumn DataField="Id" DataType="System.Int32" HeaderText="Id" ReadOnly="True" UniqueName="Id"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="FileName" HeaderText="FileName" UniqueName="FileName" ReadOnly="true" DataType="System.String"> </telerik:GridBoundColumn> <telerik:GridAttachmentColumn DataSourceID="AttachmentDataSource" MaxFileSize="1048576" EditFormHeaderTextFormat="Upload Attachment:" HeaderText="Attachment" HeaderTooltip="Download Attachment" AttachmentDataField="Attachment" AttachmentKeyFields="Id" FileNameTextField="FileName" DataTextField="FileName" UniqueName="Attachment"> </telerik:GridAttachmentColumn> </Columns> </MasterTableView> <ClientSettings> <ClientEvents OnCommand="GridOnCommand" /> </ClientSettings> </telerik:RadGrid> <asp:EntityDataSource ConnectionString="name=MyEntities" DefaultContainerName="MyEntities" EnableFlattening="False" EntitySetName="Attachments" EntityTypeFilter="Attachment" ID="AttachmentsDataSource" runat="server"> </asp:EntityDataSource> <asp:EntityDataSource ConnectionString="name=MyEntities" DefaultContainerName="MyEntities" EnableFlattening="False" EntitySetName="Attachments" EntityTypeFilter="Attachment" ID="AttachmentDataSource" runat="server" Where="it.[Id] = @Id" Select="it.[Attachment]"> <SelectParameters> <asp:Parameter Name="Id" Type="Int32" /> </SelectParameters> </asp:EntityDataSource> </asp:Content>Content Page Code-Behind
namespace MyNamespace { using System; using MyMasterPages; using Telerik.Web.UI; public partial class Attachments : Page { protected void Page_Init(object sender, EventArgs e) { if (this.Master != null) { var ajaxManager = (RadAjaxManager)this.Master.FindControl("TelerikAjaxManager"); if (ajaxManager != null) { ajaxManager.ClientEvents.OnRequestStart += "ConditionalPostback"; } } } protected void AttachmentsGrid_OnCommand(object sender, GridCommandEventArgs e) { var editedItem = e.Item as GridEditableItem; if (editedItem != null) { switch (e.CommandName) { case RadGrid.PerformInsertCommandName: case RadGrid.UpdateCommandName: // Insert or Update break; case RadGrid.DeleteCommandName: // Delete break; } } } protected void AttachmentsGrid_OnItemCommand(object sender, GridCommandEventArgs e) { if (e.CommandName == RadGrid.DownloadAttachmentCommandName) { e.Canceled = true; var args = e as GridDownloadAttachmentCommandEventArgs; if (args != null) { var attachmentId = (int)args.AttachmentKeyValues["Id"]; byte[] attachment = GetAttachment(); if (attachment != null) { Response.Clear(); Response.ContentType = "application/octet-stream"; Response.AddHeader("content-disposition", "attachment; filename=" + args.FileName); Response.BinaryWrite(attachment); Response.End(); } } } } } }That's all the important stuff. Like I said, works fine locally.
Richard