[CLOSED] MultiUpload1_FileUpload does not work when MultiUpload Grid created in codebehind

  1. #1

    [CLOSED] MultiUpload1_FileUpload does not work when MultiUpload Grid created in codebehind

    When I created the grid from codebdhind, MultiUpload1_FileUpload does not work:
    protected void MultiUpload1_FileUpload(object sender, FileUploadEventArgs e)
        {
            string str1 = e.FileName;
            X.Msg.Notify("File is uploaded", "Name: " + e.FileName).Show();
        }
    pls see code:

    <%@ Page Language="C#"  %>
    
    <script runat="server">
    
        protected void Page_Init(object sender, EventArgs e)
        {
            Form1.Controls.Add(GridMultiUpload());
            MultiUpload MultiUpload1 = X.GetCmp<Ext.Net.MultiUpload>("MultiUpload1");
            if (MultiUpload1.IsInForm == true)
            {
                MultiUpload1.FileUpload += MultiUpload1_FileUpload;
            }
        }
    
        public GridPanel GridMultiUpload()
        {
            GridPanel GridPanel1 = new GridPanel();
            Store Store1 = new Store();
    
            GridPanel1.ID = "UploadGrid";
            GridPanel1.Frame = true;
            GridPanel1.Width = 520;
            GridPanel1.Height = 300;
    
            Toolbar Toolbar1 = new Toolbar();
            Toolbar1.ID = "Toolbar1";
    
            ToolbarSeparator ToolbarSeparator1 = new ToolbarSeparator();
            Toolbar1.Items.Add(ToolbarSeparator1);
    
            Ext.Net.Button btn1 = new Ext.Net.Button();
            MultiUpload MultiUpload1 = new MultiUpload();
            MultiUpload1.FormID = "Form1";
            MultiUpload1.ID = "MultiUpload1";
            MultiUpload1.FileUploadLimit = 50;
            MultiUpload1.FileSizeLimit = "15 MB";
            MultiUpload1.FileTypes = "*.*";
            MultiUpload1.FileDropAnywhere = true;
            MultiUpload1.AutoStartUpload = false;
            MultiUpload1.FileTypesDescription = "All Files";
            MultiUpload1.FileQueueLimit = 0;
    
            MultiUpload1.Listeners.FileSelected.Fn = "fileSelected";
            MultiUpload1.Listeners.UploadStart.Handler = "updateRecord(file.id, 'status', 'Sending');";
            MultiUpload1.Listeners.UploadProgress.Handler = "updateRecord(file.id, 'progress', Math.round(bytesComplete / bytesTotal));";
            MultiUpload1.Listeners.UploadComplete.Handler = @"updateRecord(file.id, 'progress', 1 );updateRecord(file.id, 'status', 'Uploaded' );";
    
            MultiUpload1.Listeners.SwfUploadLoadFailed.Fn = "loadFailed";
            MultiUpload1.Listeners.UploadAborted.Handler = "updateRecord(file.id, 'status', 'Aborted');";
            MultiUpload1.Listeners.UploadRemoved.Handler = "var store = this.up('grid').store; store.remove(store.getById(file.id));";
            MultiUpload1.Listeners.UploadError.Fn = "uploadError";
            MultiUpload1.Listeners.FileSelectionError.Fn = "fileSelectionError";
    
            Toolbar1.Items.Add(MultiUpload1);
    
            ToolbarSeparator1 = new ToolbarSeparator();
            Toolbar1.Items.Add(ToolbarSeparator1);
    
            btn1 = new Ext.Net.Button();
            btn1.ID = "BtnUpAdd";
            btn1.Icon = Icon.DiskUpload;
            btn1.Handler = "#{MultiUpload1}.startUpload();";
            Toolbar1.Items.Add(btn1);
    
            ToolbarSeparator1 = new ToolbarSeparator();
            Toolbar1.Items.Add(ToolbarSeparator1);
    
            btn1 = new Ext.Net.Button();
            btn1.ID = "BtnUpDel";
            btn1.Icon = Icon.Decline;
    
            Toolbar1.Items.Add(btn1);
            ToolbarSeparator1 = new ToolbarSeparator();
            Toolbar1.Items.Add(ToolbarSeparator1);
    
            ToolbarFill ToolbarFill1 = new ToolbarFill();
            Toolbar1.Items.Add(ToolbarFill1);
    
            GridPanel1.TopBar.Add(Toolbar1);
    
            GridHeaderContainer ColumnModel1 = new GridHeaderContainer();
            string strColName = string.Empty;
            string strColNames = string.Empty;
            string strLenth = string.Empty;
            string strCtrlType = string.Empty;
            Ext.Net.Column cl = new Column();
            Ext.Net.DateColumn col = new DateColumn();
            Ext.Net.Model md = new Model();
            md.ID = "Model1";
            Ext.Net.ModelField mf = new ModelField();
    
            mf = new ModelField();
            mf.Name = "id";
            md.Fields.Add(mf);
            mf = new ModelField();
            mf.Name = "name";
            md.Fields.Add(mf);
            mf = new ModelField();
            mf.Name = "size";
            md.Fields.Add(mf);
            mf = new ModelField();
            mf.Name = "status";
            md.Fields.Add(mf);
            mf = new ModelField();
            mf.Name = "progress";
            md.Fields.Add(mf);
            md.IDProperty = "id";
            Store1.Model.Add(md);
    
            cl = new Column();
            cl.ID = "Column1";
            cl.Text = "name";
            cl.DataIndex = "name";
            cl.Width = 150;
            ColumnModel1.Columns.Add(cl);
            cl = new Column();
            cl.ID = "Column2";
            cl.Text = "size";
            cl.DataIndex = "size";
            cl.Width = 50;
            cl.Renderer.Format = RendererFormat.FileSize;
            ColumnModel1.Columns.Add(cl);
            cl = new Column();
            cl.ID = "Column3";
            cl.Text = "&nbsp;";
            cl.DataIndex = "status";
            cl.Width = 50;
            cl.Renderer.Fn = "statusIconRenderer";
            ColumnModel1.Columns.Add(cl);
            cl = new Column();
            cl.ID = "Column4";
            cl.Text = "status";
            cl.DataIndex = "status";
            cl.Width = 50;
            ColumnModel1.Columns.Add(cl);
            ProgressBarColumn cl1 = new ProgressBarColumn();
            cl1.ID = "ProgressBarColumn1";
            cl1.Text = "progress";
            cl1.DataIndex = "progress";
    
            ColumnModel1.Columns.Add(cl1);
    
            GridPanel1.Store.Add(Store1);
            GridPanel1.ColumnModel.Columns.AddRange(ColumnModel1.Columns);
    
            return GridPanel1;
        }
    
    
        protected void MultiUpload1_FileUpload(object sender, FileUploadEventArgs e)
        {
            string str1 = e.FileName;
            X.Msg.Notify("File is uploaded", "Name: " + e.FileName).Show();
        }
    
    </script>
    
    <!DOCTYPE html>
    
    <html>
    <head id="Head1" runat="server">
        <title>Grid MultiUpload - Ext.NET Examples</title>
        <link href="/resources/css/examples.css" rel="stylesheet" />
        <script type="text/javascript">
            var loadFailed = function () {
                alert("Something went wrong while loading SWFUpload. If this were a real application we'd clean up and then give you an alternative");
            };
    
            var statusIconRenderer = function (value) {
                switch (value) {
                    default:
                        return value;
                    case 'Pending':
                        return '<img src="' + Ext.net.ResourceMgr.getIconUrl("Hourglass") + '" width=16 height=16>';
                    case 'Sending':
                        return '<div src="x-loading-indicator" width=16 height=16>';
                    case 'Error':
                        return '<img src="' + Ext.net.ResourceMgr.getIconUrl("Decline") + '" width=16 height=16>';
                    case 'Cancelled':
                    case 'Aborted':
                        return '<img src="' + Ext.net.ResourceMgr.getIconUrl("Decline") + '" width=16 height=16>';
                    case 'Uploaded':
                        return '<img src="' + Ext.net.ResourceMgr.getIconUrl("Tick") + '" width=16 height=16>';
                }
            };
    
            var updateRecord = function (id, field, value) {
                var rec = App.UploadGrid.store.getById(id);
                rec.set(field, value);
                rec.commit();
            };
    
            var abortUpload = function (btn) {
                var selModel = btn.up('grid').getSelectionModel(),
                    records;
    
                if (!selModel.hasSelection()) {
                    Ext.Msg.alert('Error', 'Please select an upload to cancel');
                    return true;
                }
    
                records = selModel.getSelection();
                App.MultiUpload1.abortUpload(records[0].getId());
            };
    
            var removeUpload = function (btn) {
                var selModel = btn.up('grid').getSelectionModel(),
                    records;
    
                if (!selModel.hasSelection()) {
                    Ext.Msg.alert('Error', 'Please select an upload to remove');
                    return true;
                }
    
                records = selModel.getSelection();
                App.MultiUpload1.removeUpload(records[0].getId());
            };
    
            var fileSelected = function (item, file) {
                //Example of cancelling a file to be selection
                if (file.name == 'image.jpg') {
                    Ext.Msg.alert('Error', 'You cannot upload a file named "image.jpg"');
                    return false;
                }
    
                this.up('grid').store.add({
                    id: file.id,
                    name: file.name,
                    size: file.size,
                    status: 'Pending',
                    progress: 0
                });
            };
    
            var uploadError = function (item, file, errorCode, message) {
                updateRecord(file.id, 'progress', 0);
                updateRecord(file.id, 'status', 'Error');
    
                switch (errorCode) {
                    case SWFUpload.UPLOAD_ERROR.HTTP_ERROR:
                        alert("Error Code: HTTP Error, File name: " + file.name + ", Message: " + message);
                        break;
                    case SWFUpload.UPLOAD_ERROR.UPLOAD_FAILED:
                        alert("Error Code: Upload Failed, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
                        break;
                    case SWFUpload.UPLOAD_ERROR.IO_ERROR:
                        alert("Error Code: IO Error, File name: " + file.name + ", Message: " + message);
                        break;
                    case SWFUpload.UPLOAD_ERROR.SECURITY_ERROR:
                        alert("Error Code: Security Error, File name: " + file.name + ", Message: " + message);
                        break;
                    case SWFUpload.UPLOAD_ERROR.UPLOAD_LIMIT_EXCEEDED:
                        alert("Error Code: Upload Limit Exceeded, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
                        break;
                    case SWFUpload.UPLOAD_ERROR.FILE_VALIDATION_FAILED:
                        alert("Error Code: File Validation Failed, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
                        break;
                    case SWFUpload.UPLOAD_ERROR.FILE_CANCELLED:
                        updateRecord(file.id, 'status', 'Cancelled');
                        break;
                    case SWFUpload.UPLOAD_ERROR.UPLOAD_STOPPED:
                        updateRecord(file.id, 'status', 'Stopped');
                        break;
                    default:
                        updateRecord(file.id, 'status', "Unhandled Error: " + errorCode);
                        alert("Error Code: " + errorCode + ", File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
                        break;
                }
            };
    
            var fileSelectionError = function (item, file, errorCode, message) {
                if (errorCode === SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED) {
                    alert("You have attempted to queue too many files.\n" + (message === 0 ? "You have reached the upload limit." : "You may select " + (message > 1 ? "up to " + message + " files." : "one file.")));
                    return;
                }
    
                switch (errorCode) {
                    case SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT:
                        alert("Error Code: File too big, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
                        break;
                    case SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE:
                        alert("Error Code: Zero byte file, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
                        break;
                    case SWFUpload.QUEUE_ERROR.INVALID_FILETYPE:
                        alert("Error Code: Invalid File Type, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
                        break;
                    default:
                        alert("Error Code: " + errorCode + ", File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
                        break;
                }
            };
        </script>
    </head>
    <body>
        <form id="Form1" runat="server">
            <ext:ResourceManager ID="ResourceManager1" runat="server" />
        </form>
    </body>
    </html>
    Last edited by Daniil; Jan 21, 2014 at 3:44 AM. Reason: Please use [CODE] tags, [CLOSED]
  2. #2
    X.GetCmp forces LoadPostData calling but your handler is not attached yet
    Please use the following Page_Init method
    protected void Page_Init(object sender, EventArgs e)
        {
            var grid = GridMultiUpload();
            Form1.Controls.Add(grid);
            var upload = Ext.Net.Utilities.ControlUtils.FindChildControl<MultiUpload>(grid);
            if (upload.IsInForm)
            {
                upload.FileUpload += MultiUpload1_FileUpload;
            }
        }
  3. #3
    It works fine.
    Thanks.
    pls close.

Similar Threads

  1. [CLOSED] MultiUpload Grid Question
    By ebeker in forum 2.x Legacy Premium Help
    Replies: 2
    Last Post: Jan 07, 2014, 11:05 AM
  2. MaxLength at codebehind doesn't work
    By jmroyb in forum 1.x Help
    Replies: 1
    Last Post: Nov 10, 2011, 10:54 AM
  3. Replies: 5
    Last Post: Dec 07, 2010, 5:06 PM
  4. Replies: 8
    Last Post: Aug 17, 2009, 7:44 PM
  5. Replies: 0
    Last Post: Jun 01, 2009, 5:27 AM

Posting Permissions