not able to download file from grid

4 posts, 0 answers
  1. Rajshree
    Rajshree avatar
    36 posts
    Member since:
    Feb 2015

    Posted 28 Jul 2015 Link to this post

    <telerik:RadCodeBlock ID="RadCodeBlock2" runat="server">
           <%-- <script type="text/javascript">
                var manager;
                Sys.Application.add_load(function () {
                    manager = $find('<%= RadAjaxManager.GetCurrent(Page).ClientID %>');
                   
                    })
            </script>
        <script type="text/javascript">
            function gridCommand(sender, args) {
                alert(args.get_commandName());
                if (args.get_commandName() == "DownloadAttachment") {
                    manager.set_enableAJAX(false);
     
                    setTimeout(function () {
                        manager.set_enableAJAX(true);
                    }, 0);
                }
            }
     
         
        </script>--%>
     
            <script type="text/javascript">
                function onRequestStart(sender, args) {
                    if (args.get_eventTarget().indexOf("Button") >= 0) {
     
                        args.set_enableAjax(false);
                    }
     
                }
     
     
     
            </script>
        </telerik:RadCodeBlock>
      <%--<telerik:RadAjaxManager ID="RadAjaxManager1" runat="server">
            <AjaxSettings>
                <telerik:AjaxSetting AjaxControlID="gridProjectManagement">
                    <UpdatedControls>
                        <telerik:AjaxUpdatedControl ControlID="gridProjectManagement"></telerik:AjaxUpdatedControl>
                    </UpdatedControls>
                </telerik:AjaxSetting>
                
            </AjaxSettings>
           
        </telerik:RadAjaxManager>--%>
    <telerik:RadWindowManager ID="RadWindowManager1" runat="server"></telerik:RadWindowManager>
        <telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel1" runat="server"></telerik:RadAjaxLoadingPanel>
       <telerik:RadFormDecorator ID="RadFormDecorator1" runat="server" DecorationZoneID="demo" DecoratedControls="All" EnableRoundedCorners="false" />
          <telerik:RadAjaxPanel runat="server" ID="RadAjaxPanel2" ClientEvents-OnRequestStart="onRequestStart" CssClass="div-container no-bg" LoadingPanelID="RadAjaxLoadingPanel1">
        
         <telerik:RadGrid ID="gridProjectManagement" GridLines="None" runat="server" AllowAutomaticDeletes="false"
                AllowAutomaticInserts="True" AllowSorting="true"
                OnItemCreated="gridProjectManagement_ItemCreated" OnPreRender="gridProjectManagement_PreRender" AllowAutomaticUpdates="True"
                AutoGenerateColumns="False" OnBatchEditCommand="gridProjectManagement_BatchEditCommand"  OnItemCommand="gridProjectManagement_ItemCommand" OnNeedDataSource="gridProjectManagement_NeedDataSource" OnItemDataBound="gridProjectManagement_ItemDataBound" >
               <ExportSettings ExportOnlyData="true" HideStructureColumns="true" OpenInNewWindow="true" IgnorePaging="true"><Excel Format="Html" /></ExportSettings>
                 
              <MasterTableView CommandItemDisplay="Top" DataKeyNames="ID"   Font-Size="Small" CommandItemSettings-ShowAddNewRecordButton="false" CommandItemSettings-ShowRefreshButton="false"
                    HorizontalAlign="NotSet" EditMode="Batch" AutoGenerateColumns="False" >
                                      <CommandItemSettings ShowExportToCsvButton="true" ShowExportToExcelButton="true" ShowAddNewRecordButton="true" ShowExportToPdfButton="true" ShowExportToWordButton="true" />
     
                    <BatchEditingSettings EditType="Cell" OpenEditingEvent="Click" />
                      
    <%--                <SortExpressions>
                        <telerik:GridSortExpression FieldName="PerspModel_ID" SortOrder="Descending" />
                    </SortExpressions>--%>
                    <Columns>
                          
                        <telerik:GridBoundColumn DataField="ID" ForceExtractValue="Always" Display="false"  HeaderText="ID"
                            UniqueName="ID">
                        </telerik:GridBoundColumn>
                        
                         <telerik:GridBoundColumn DataField="Activity" SortExpression="Activity"  HeaderStyle-Width="150px" HeaderText="Activity"
                            UniqueName="Activity">
                        </telerik:GridBoundColumn>
                        
                         
     
                         
                         <telerik:GridNumericColumn DataField="Estimate" HeaderStyle-Width="80px"  AllowSorting="false"   DataType="System.Decimal"  DecimalDigits="1"  HeaderText="Estimate(hours)"
                            SortExpression="Estimate" UniqueName="Estimate">
                        </telerik:GridNumericColumn>
                      
                     <%--    <telerik:GridTemplateColumn ColumnEditorID="EstimateAssumptions" ItemStyle-CssClass="breakWord120" UniqueName="EstimateAssumptions" ItemStyle-Width="100px"  HeaderStyle-Width="150px"  HeaderText="Estimate Assumptions">
                            <ItemTemplate>
                            <%# Eval("EstimateAssumptions")%>
                               
                            </ItemTemplate>
                            <EditItemTemplate>
                                 <telerik:RadTextBox ID="txtEditEstimateAssumptions"  Height="50px"  Wrap="true"  TextMode="MultiLine"  ToolTip='<%# Eval("EstimateAssumptions")%>' runat="server" Text='<%# Eval("EstimateAssumptions")%>'></telerik:RadTextBox>
                          
                                 </EditItemTemplate>
                         </telerik:GridTemplateColumn>--%>
     
    <%--                     <telerik:GridBoundColumn DataField="EstimateAssumptions" ItemStyle-CssClass="breakWord120" SortExpression="EstimateAssumptions"  HeaderStyle-Width="150px" HeaderText="Estimate Assumptions"
                            UniqueName="EstimateAssumptions">
                        </telerik:GridBoundColumn>--%>
                       
                       <telerik:GridAttachmentColumn 
                            EditFormHeaderTextFormat="Upload File:" HeaderStyle-Width="150px" HeaderText="Attachment" AttachmentDataField="Attachment" UploadControlType="RadAsyncUpload"
                            AttachmentKeyFields="ID" FileNameTextField="FileName" DataTextField="FileName"
                            UniqueName="Attachment">
                        </telerik:GridAttachmentColumn>
     
                    </Columns>
     
                </MasterTableView>
                <ClientSettings>
                    <Scrolling AllowScroll="true" UseStaticHeaders="true" ScrollHeight="300px" SaveScrollPosition="true"></Scrolling>
                                     <%-- <ClientEvents OnBatchEditOpened="OnBatchEditOpened" OnBatchEditOpening="BatchEditOpening"   />--%>
     
                   
                <%--<ClientEvents OnCommand="gridCommand"></ClientEvents>--%>
            </ClientSettings>
            </telerik:RadGrid>
               </telerik:RadAjaxPanel>
     
    using System;
    using System.Linq;
    using System.Collections.Generic;
    using System.Collections;
    using System.Web.UI.WebControls;
    using System.IO;
    using Telerik.Web.UI;
    using RetirementAcceleratorTool.DataAccess;
    using RetirementAcceleratorTool.UIClass;
     
    namespace RetirementAcceleratorTool.UserControls
    {
        public partial class ProjectManagementROIControl : System.Web.UI.UserControl
        {
            private EntitiesModel _dataContext;
     
            protected EntitiesModel DbContext
            {
                get
                {
                    if (_dataContext == null)
                    {
                        _dataContext = new EntitiesModel();
                    }
                    return _dataContext;
                }
            }
     
            public override void Dispose()
            {
                if (_dataContext != null)
                {
                    _dataContext.Dispose();
                }
                base.Dispose();
            }
     
     
            private int? appname;
     
            public int? AppName
            {
                get
                {
                    if (Session["AppName"] != null)
                    {
                        return Convert.ToInt32(Session["AppName"]);
                    }
                    else
                        return null;
                }
            }
     
            public List<ApplicationName> ListApplicationName
            {
                get
                {
                    var list = new List<ApplicationName>();
     
                    using (var db = new EntitiesModel())
                    {
                        list = db.ApplicationNames.Where(x => x.InScope == true && x.IsRetirementCandidate == true).ToList();
                    }
     
                    return list;
                }
            }
     
            public List<ActivityArchivalSupportPM> ListActivityArchivalSupportPM
            {
                get
                {
                    var list = new List<ActivityArchivalSupportPM>();
     
                    using (var db = new EntitiesModel())
                    {
                        list = db.ActivityArchivalSupportPMs.Where(x => x.IsProjectManagement == true).ToList();
                    }
     
                    return list;
                }
            }
     
            protected void Page_Load(object sender, EventArgs e)
            {
     
            }
     
            protected void gridProjectManagement_ItemCreated(object sender, GridItemEventArgs e)
            {
                //if (e.Item is GridDataItem)
                //{
                //    GridDataItem dataItem = e.Item as GridDataItem;
                //    GridAttachmentColumn ibtnAddToCart = (GridAttachmentColumn)(dataItem["Attachment"]);
                //    ImageButton ibtnAddToCart1 = (ImageButton)(dataItem["TemplateColumn1"]).FindControl("ibtnAddToCart");
                //    //ajaxify the button
                //    RadAjaxManager1.AjaxSettings.AddAjaxSetting(ibtnAddToCart1, gridProjectManagement, RadAjaxLoadingPanel1);
                //}
            }
     
            protected void gridProjectManagement_PreRender(object sender, EventArgs e)
            {
     
            }
     
            protected void gridProjectManagement_BatchEditCommand(object sender, GridBatchEditingEventArgs e)
            {
                int s = e.Commands.Count();
                foreach (GridBatchEditingCommand command in e.Commands)
                {
     
                    Hashtable newValues = command.NewValues;
                    Hashtable oldValues = command.OldValues;
     
                    int? id = (int?)newValues["ID"];
                    //Convert.ToInt64(newValues["ID"].ToString());
                    RadAsyncUpload upload = (gridProjectManagement.MasterTableView.GetBatchEditorContainer("Attachment").Controls[0] as RadAsyncUpload) as RadAsyncUpload;
                    // string fileName = upload.UploadedFiles[0].FileName;
                    string fileName = "";
                    foreach (UploadedFile file in upload.UploadedFiles)
                    {
     
                        byte[] result;
                        using (var streamReader = new MemoryStream())
                        {
                            file.InputStream.CopyTo(streamReader);
                            result = streamReader.ToArray();
                        }
                        if (Equality(result, (byte[])newValues["FileName"]))
                        {
                            fileName = file.FileName;
                        }
                    }
     
                    // string newFirstName = newValues["PerspectiveRating"].ToString();
                    if (id.HasValue)
                    {
                        var OldeItem = ListActivityArchivalSupportPM.Where(x => x.ID == Convert.ToInt32(id)).FirstOrDefault();
     
                        using (var db = new EntitiesModel())
                        {
                            var p = db.ActivityArchivalSupportPMs.Where(x => x.ID == Convert.ToInt32(id)).FirstOrDefault();
                            if (newValues["Estimate"] != null)
                            {
                                p.Estimate = Convert.ToDecimal(newValues["Estimate"].ToString());
                            }
     
                            p.FileName = fileName;
                            p.Activity = (string)newValues["Activity"];
                            p.EstimateAssumptions = (string)newValues["EstimateAssumptions"];
                            p.ApplicationID = AppName.Value;
                            if (newValues["FileName"] != null)
                            {
                                p.Attachment = (Byte[])newValues["FileName"];
                            }
                            db.SaveChanges();
                            try
                            {
                                //save chanages to Db
     
                            }
                            catch (System.Exception)
                            {
                            }
                        }
                        //do update
                    }
                    else
                    {
                        ActivityArchivalSupportPM newItem = new ActivityArchivalSupportPM();
                        if (newValues["Estimate"] != null)
                        {
                            newItem.Estimate = Convert.ToDecimal(newValues["Estimate"].ToString());
                        }
     
     
     
                        newItem.EstimateAssumptions = (string)newValues["EstimateAssumptions"];
                        newItem.Activity = (string)newValues["Activity"];
                        newItem.IsProjectManagement = true;
                        newItem.IsArchivalSupport = false;
                        newItem.ApplicationID = AppName.Value;
                        newItem.FileName = fileName;
                        if (newValues["FileName"] != null)
                        {
                            newItem.Attachment = (Byte[])newValues["FileName"];
                        }
                        DbContext.Add(newItem);
     
                        try
                        {
                            //save chanages to Db
                            DbContext.SaveChanges();
                            //command.Item.Edit = false;
                        }
                        catch (System.Exception)
                        {
                        }
     
                    }
                }
            }
     
            protected void gridProjectManagement_ItemCommand(object sender, GridCommandEventArgs e)
            {
                if (e.CommandName == RadGrid.DownloadAttachmentCommandName)
                {
                    RadAjaxManager Manager = new RadAjaxManager();
                    Manager.EnableAJAX = false;
                    GridDownloadAttachmentCommandEventArgs args = e as GridDownloadAttachmentCommandEventArgs;
                    string fileName = args.FileName;
                    int attachmentId = (int)args.AttachmentKeyValues["ID"];
     
                    var query = DbContext.ActivityArchivalSupportPMs.Where(x => x.ID == attachmentId).FirstOrDefault();
                    byte[] binaryData = (byte[])query.Attachment;
                    Response.ClearContent();
                    Response.ContentType = "application/octet-stream";
                    Response.AddHeader("content-disposition", "attachment; filename=" + fileName);
                    Response.AddHeader(
     
               "Content-Length", fileName.Length.ToString());
                    Response.BinaryWrite(binaryData);
                    //  Response.TransmitFile(fileName);
                    //Response.OutputStream.Write(binaryData, 0, binaryData.Length);
                    //Response.Flush();
                    //Response.Close();
                    Response.End();
                }
     
     
            }
     
            protected void gridProjectManagement_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)
            {
                if (AppName.HasValue)
                {
                    var list = ListActivityArchivalSupportPM.Where(x => x.ApplicationID == AppName).ToList();
                    if (list.Count > 0)
                    {
     
                        gridProjectManagement.DataSource = list;
     
                    }
                    else
                    {
     
                        gridProjectManagement.DataSource = string.Empty;
                    }
     
     
                }
            }
     
            protected void gridProjectManagement_ItemDataBound(object sender, GridItemEventArgs e)
            {
                //if ((e.Item is GridEditableItem) && (e.Item.IsInEditMode))
                //{
                //    GridEditableItem editItem = (GridEditableItem)e.Item;
                //    RadTextBox txtbx = (RadTextBox)editItem["EstimateAssumptions"].Controls[0];
                //    //txtbx.MaxLength = 500;
                //    //txtbx.Width = 800;
                //    txtbx.Height = 50;
                //    txtbx.TextMode = InputMode.MultiLine;
                //}
            }
     
            public void BindGrid()
            {
                if (AppName.HasValue)
                {
                    var list = ListActivityArchivalSupportPM.Where(x => x.ApplicationID == AppName).ToList();
                    if (list.Count > 0)
                    {
     
                        gridProjectManagement.DataSource = list;
     
                    }
                    else
                    {
     
                        gridProjectManagement.DataSource = string.Empty;
                    }
     
                }
                else
                {
                    gridProjectManagement.DataSource = string.Empty;
                }
     
                gridProjectManagement.DataBind();
     
            }
     
            public bool Equality(byte[] a1, byte[] b1)
            {
                int i;
                if (a1.Length == b1.Length)
                {
                    i = 0;
                    while (i < a1.Length && (a1[i] == b1[i])) //Earlier it was a1[i]!=b1[i]
                    {
                        i++;
                    }
                    if (i == a1.Length)
                    {
                        return true;
                    }
                }
     
                return false;
            }
     
            protected void gridProjectManagement_DeleteCommand(object sender, GridCommandEventArgs e)
            {
     
            }
        }
    }

    i have tried different approaches to resolve the issue below. but not able to fix it. kindly help me on this.

    i am not able to download the file. and not able to disable ajax. the file is saved in db in byte format

    message - Error: Sys.WebForms.PageRequestManagerParserErrorException: The message received from the server could not be parsed. Common causes for this error are when the response is modified by calls to Response.Write(), response filters, HttpModules, or server trace is enabled.
    Details: Error parsing near '￿￿￿JFIF'.

    http://screencast.com/t/CQePwsXg7cmm

    please find video for further detail.​

  2. Pavlina
    Admin
    Pavlina avatar
    6187 posts

    Posted 28 Jul 2015 Link to this post

    Hi,

    You can refer to the forum thread below where the same subject is discussed:
    http://www.telerik.com/forums/file-download-functionality

    Regards,
    Pavlina
    Telerik
    Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Feedback Portal and vote to affect the priority of the items
  3. Rajshree
    Rajshree avatar
    36 posts
    Member since:
    Feb 2015

    Posted 28 Jul 2015 Link to this post

    hi Pavlina,

     

    i tried adding

     <ClientSettings>
                <ClientEvents OnCommand="gridCommand" />
            </ClientSettings>

     function gridCommand(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);
                    }
                }

     

    in this case i get error below. if i remove it i dont see this error.

    not sure what is the issue. but stuck here from last 3 days. please help me.

  4. Pavlina
    Admin
    Pavlina avatar
    6187 posts

    Posted 03 Aug 2015 Link to this post

    Hello,

    I'm not sure why the code is not working thus I created a simple demo that uses a similar approach. Give it a try and see what is the difference in your case. 

    Regards,
    Pavlina
    Telerik
    Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Feedback Portal and vote to affect the priority of the items
Back to Top