December 16, 2012

Dynamic File upload in Dynamic Gridview


  <asp:GridView ID="grdUpload" runat="server" AutoGenerateColumns="false"   Width="100%"  DataKeyNames="Uploadid"    EnableViewState="true" OnRowDataBound="grdUpload_RowDataBound"
                                OnRowCommand="grdUpload_RowCommand"
                                onselectedindexchanged="grdUpload_SelectedIndexChanged">
                               
 <Columns>
                                    <asp:BoundField DataField="DocName" HeaderText="Description" />
                                    <asp:BoundField DataField="Uploadid" HeaderText="Description" Visible="false" />
                                    <asp:BoundField DataField="DocTypeId" HeaderText="Prospect_id" Visible="false" />
                                    <asp:BoundField DataField="Uploaded" HeaderText="AcType_Id" Visible="false" />
                                    <asp:BoundField DataField="Uploadedtime" HeaderText="SubType_Id" Visible="false" />

                                    <asp:BoundField DataField="Uploadedtime" HeaderText="Document_Id" Visible="false" />

                                    <asp:BoundField DataField="Header" HeaderText="Document_Type_Id" Visible="false" />

                                    <asp:BoundField DataField="DocName" HeaderText="No_of_Document" Visible="false" />

                                    <asp:BoundField DataField="DocName" HeaderText="Documnet Names" Visible="false" />
                                    <asp:TemplateField  HeaderText="Select / Browse file">
                                        <ItemTemplate>
                                            <asp:FileUpload ID="FileUpload4" runat="server" />
                                        </ItemTemplate>
                                    </asp:TemplateField>
                                    <asp:TemplateField  HeaderText="Upload">
                                        <ItemTemplate>
                                            <asp:Button ID="bt_upload" runat="server" EnableViewState="False" Text="Upload" CommandName="Upload" />
                                        </ItemTemplate>
                                    </asp:TemplateField>
                                    <asp:TemplateField HeaderText="File Name" >
                                        <ItemTemplate>
                                            <asp:LinkButton ID="lnkView" runat="server" Text='<%# Eval("FileName") %>' CommandName="_View" />
                                        </ItemTemplate>
                                    </asp:TemplateField>
                                    <asp:TemplateField HeaderText="Delete File" >
                                       <ItemTemplate >
                                            <asp:ImageButton ImageAlign="Middle" ID="lnkDeleteDoc" ImageUrl="~/App_Themes/Images/20_delete.gif" ToolTip="Delete File"   runat="server" Text="Delete File" CommandName="_Delete" />
                                        </ItemTemplate>
                                    </asp:TemplateField>

                                </Columns>

                            </asp:GridView>

 
  In Code behind
 
    protected void grdUpload_RowCommand (object sender, GridViewCommandEventArgs e)
    {
        Button bts = e.CommandSource as Button;
        #region Upload

        if (e.CommandName.ToLower() == "upload")
        {
            GridViewRow clickedRow = ((Button)e.CommandSource).NamingContainer as GridViewRow;
            int iRowindex = clickedRow.RowIndex;
            string s1 = grdUpload.Rows[iRowindex].Cells[2].ToString();
            int uploadId = Convert.ToInt32(grdUpload.DataKeys[clickedRow.RowIndex].Value);

             FileUpload fu = bts.Parent.Parent.FindControl("FileUpload4") as FileUpload;//here it is detecting file upload4

            if (fu.HasFile)//here it is showing no file in file upload control
            {
                SaveFile(fu, uploadId);
            }

        }

     #endregion

         #region View File

         if (e.CommandName.ToLower() == "_view")
        {

            GridViewRow clickedRow = ((LinkButton)e.CommandSource).NamingContainer as GridViewRow;
            int iRowindex = clickedRow.RowIndex;
            string s1 = grdUpload.Rows[iRowindex].Cells[2].ToString();
            int uploadId = Convert.ToInt32(grdUpload.DataKeys[clickedRow.RowIndex].Value);
           
            if (e.CommandName.ToLower() == "_view")
            {

                ViewFile(uploadId);
            }
        }

        #endregion
        #region  Delete File

        if (e.CommandName.ToLower() == "_delete")
        {
            GridViewRow clickedRow = ((ImageButton)e.CommandSource).NamingContainer as GridViewRow;
            int iRowindex = clickedRow.RowIndex;
            string s1 = grdUpload.Rows[iRowindex].Cells[2].ToString();
            int uploadId = Convert.ToInt32(grdUpload.DataKeys[clickedRow.RowIndex].Value);

            DeleteDocument(uploadId);
        }

        #endregion
    }

 

    private void DeleteDocument(int UploadID)

    {

        string fileName = string.Empty;
        UploadProofPage oUploadProofPage = new UploadProofPage();
        oUploadProofPage.UploadId = UploadID;

        if (oUploadProofPage.DeleteUploadedFileById())
        {

            lblMessage.Visible = true;

            lblMessage.Text = "File Deleted..";

            BindUploadGrid();
        }
     }

     private void ViewFile(int UploadID)

    {

         Response.ClearContent();
 
        string fileName = string.Empty;

        UploadProofPage oUploadProofPage = new UploadProofPage();

        oUploadProofPage.UploadId = UploadID;

        DataSet ds = new DataSet();

        ds = oUploadProofPage.GetDataUploaded();

         if (ds != null)

        {

            Byte[] bytes = (Byte[])ds.Tables[0].Rows[0]["Uploaded_Document"];

            Response.Buffer = true;

            Response.Charset = "";

            Response.Cache.SetCacheability(HttpCacheability.NoCache);

            Response.ContentType = ds.Tables[0].Rows[0]["ContentType"].ToString();

            Response.AddHeader("content-disposition", "attachment;filename="

                + ds.Tables[0].Rows[0]["FileName"].ToString());

            Response.BinaryWrite(bytes);

            Response.Flush();

            Response.End();

        }

    }

 
   private void SaveFile(FileUpload fpControl, int UploadID)
    {

        string fileName = Path.GetFileName(fpControl.PostedFile.FileName);

        string fileExtension = Path.GetExtension(fpControl.PostedFile.FileName);

        string documentType = string.Empty;

        if (fileExtension != ".exe" || fileExtension != ".dll")
        {
            //provide document type based on it's extension
            switch (fileExtension)
            {
                case ".pdf":

                    documentType = "application/pdf";

                    break;

                case ".xls":

                    documentType = "application/vnd.ms-excel";

                    break;

                case ".xlsx":

                    documentType = "application/vnd.ms-excel";

                    break;

                case ".doc":

                    documentType = "application/vnd.ms-word";

                    break;

                case ".docx":

                    documentType = "application/vnd.ms-word";

                    break;

                case ".gif":

                    documentType = "image/gif";

                    break;

                case ".png":

                    documentType = "image/png";

                    break;

                case ".jpg":

                    documentType = "image/jpg";

                    break;
            }

             //Calculate size of file to be uploaded

            int fileSize = fpControl.PostedFile.ContentLength;

            Stream fs = fpControl.PostedFile.InputStream;

            BinaryReader br = new BinaryReader(fs);

            Byte[] bytes = br.ReadBytes((Int32)fs.Length);

            //Create array and read the file into it

             //fpControl.PostedFile.InputStream.Read(bytes, 0, fileSize);

            UploadProofPage oUploadProofPage = new UploadProofPage();

            oUploadProofPage.UPLOAD_IdProof = bytes;

            oUploadProofPage.UploadId = UploadID;

            oUploadProofPage.FileName = fileName;

            oUploadProofPage.ContentType = documentType;

            if (oUploadProofPage.UpdateFilePosted())
            {

                lblMessage.Visible = true;

                lblMessage.Text = "file Uploaded successfully..";

                //spMsg.InnerText = "";

                BindUploadGrid();
             }

            else

            {

            }
        }

        else

        {

            //spMsg.InnerText = "Error";

            lblMessage.Visible = true;

            lblMessage.Text = "Can not upload exe or dll..";

        }

     }

 

No comments:

Post a Comment