[CLOSED] FileUploadField in ComponentMenuItem problem

  1. #1

    [CLOSED] FileUploadField in ComponentMenuItem problem

    Hi,
    I have a FileUploadField in a ComponentMenuItem and in FileUploadField_afterSelect the property hasFile is always false.
    See my example:

    <%@ Page Language="C#" %>
    <%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %>
    <%@ Import Namespace="System.Collections.Generic" %><script runat="server">
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!X.IsAjaxRequest)
            {
                this.BuildTree(TreePanel1.Root);
            }
        }
        private Ext.Net.TreeNodeCollection BuildTree(Ext.Net.TreeNodeCollection nodes)
        {
            if (nodes == null)
            {
                nodes = new Ext.Net.TreeNodeCollection();
            }
            Ext.Net.TreeNode root = new Ext.Net.TreeNode();
            root.Text = "Root";
            nodes.Add(root);
            string prefix = DateTime.Now.Second + "_";
            for (int i = 0; i < 10; i++)
            {
                Ext.Net.TreeNode node = new Ext.Net.TreeNode();
                node.NodeID = i.ToString();
                node.Text = prefix + i;
                root.Nodes.Add(node);
            }
            return nodes;
        }
        protected void RemoteRename(object sender, RemoteRenameEventArgs e)
        {
            e.Accept = true;
            // 1. You can set own text
            //    e.NewText = e.NewText + "_echo";
            
            // 2. You can refuse action
            //    e.Accept = false;
            //    e.RefusalMessage = "Error";
        }
        protected void RemoteRemove(object sender, RemoteActionEventArgs e)
        {
            e.Accept = true;
        }
        protected void RemoteAppend(object sender, RemoteAppendEventArgs e)
        {
            e.Accept = true;
            e.Text = e.Text + "_new";
        }
        protected void RemoteMove(object sender, RemoteMoveEventArgs e)
        {
            e.Accept = true;
        }
        protected void FileUploadField_afterSelect(object sender, DirectEventArgs e)
        {
         
          if (this.FileUploadField2.HasFile)
          {
            this.FileUploadField2.Reset();
            
            X.Msg.Show(new MessageBoxConfig
            {
              Title = "test",
              Message = "ok",
              Buttons = MessageBox.Button.OK,
              Icon = MessageBox.Icon.INFO
            });
             
          }
          X.Mask.Hide();
        }
        
    </script>
    <!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="Head1" runat="server">
        <title>Remote mode - Ext.NET Examples</title>
        <link href="../../../../resources/css/examples.css" rel="stylesheet" type="text/css" />
        
        <style type="text/css">
            .bold-text{
                font-weight:bold;
                padding-left: 25px;
                font-size:110%;
            }
        </style>
        
        <script type="text/javascript">
          function showMenu(node, e) {
            var menu = TreeContextMenu;
            if (node.browserEvent) {
              this.menuNode = this.getRootNode();
              menu.nodeName = "";
              this.getSelectionModel().clearSelections();
              e = node;
            }
            else {
              this.menuNode = node;
              menu.nodeName = node.text;
              node.select();
            }
            menu.showAt([e.getXY()[0], e.getXY()[1] + 18]);
            e.stopEvent();
          }
        </script>
    </head>
    <body>
        <form id="Form1" runat="server">
            <ext:ResourceManager ID="ResourceManager1" runat="server" />
            
            <h1>Remote mode</h1>
            
            <p>This example demomstrates remote mode of the TreePanel : remote confirmation of basic operations (rename, remove, append/insert, drag/drop)</p>
            
            <p>The remote mode is activating if set Mode="Remote"</p>
            
            <p>You can define particular action as local even if Mode="Remote" (LocalActions property)</p>
            <p>List of available values for LocalActions: rename, remove, append, insert, move</p>
            
            <ext:Menu ID="TreeContextMenu" runat="server" EnableScrolling="false">
                <Items>
                    <ext:MenuTextItem ID="NodeName" runat="server" Cls="bold-text" />
                    <ext:MenuSeparator />
                    <ext:MenuItem ID="MenuItem1" runat="server" Text="Rename" Icon="Pencil">
                        <Listeners>
                            <Click Handler="#{TreePanel1}.startEdit(#{TreePanel1}.menuNode, 10);" />
                        </Listeners>
                    </ext:MenuItem>
                    
                    <ext:MenuItem ID="MenuItem2" runat="server" Text="Remove" Icon="Delete">
                        <Listeners>
                            <Click Handler="#{TreePanel1}.removeNode(#{TreePanel1}.menuNode);" />
                        </Listeners>
                    </ext:MenuItem>
                    
                    <ext:MenuItem ID="MenuItem3" runat="server" Text="Append child" Icon="Add">
                        <Listeners>
                            <Click Handler="#{TreePanel1}.appendChild(#{TreePanel1}.menuNode, 'New');" />
                        </Listeners>
                    </ext:MenuItem>
                    
                    <ext:MenuItem ID="MenuItem4" runat="server" Text="Insert child" Icon="ArrowRight">
                        <Listeners>
                            <Click Handler="#{TreePanel1}.appendChild(#{TreePanel1}.menuNode, 'New', true);" />
                        </Listeners>
                    </ext:MenuItem>
                    <ext:ComponentMenuItem ID="mnImport" Icon="ArrowUp" runat="server">
                    <Component>
                      <ext:FileUploadField 
                          ID="FileUploadField2" 
                          runat="server"
                          ButtonOnly="true"
                          ButtonText="Import file"
                        >
                         <DirectEvents>
                          <FileSelected OnEvent="FileUploadField_afterSelect" IsUpload="true">
                          </FileSelected>
                         </DirectEvents>
                         <Listeners>
                          <FileSelected Handler="TreeContextMenu.hide(); Ext.net.Mask.show();" />
                         </Listeners>
                        </ext:FileUploadField>
                    </Component>
                </ext:ComponentMenuItem>
                </Items>
                <Listeners>
                    <Show Handler="#{NodeName}.el.update(this.nodeName);" />
                </Listeners>
            </ext:Menu>
            
            <ext:TreePanel 
                ID="TreePanel1"
                runat="server" 
                Height="300" 
                Width="250"
                UseArrows="true"
                AutoScroll="true"
                Animate="true"
                EnableDD="true"
                Mode="Remote"
                RootVisible="false"
                AllowLeafDrop="true"
                ContainerScroll="true"
                OnRemoteRename="RemoteRename"
                OnRemoteRemove="RemoteRemove"
                OnRemoteAppend="RemoteAppend"
                OnRemoteMove="RemoteMove"
                >                        
                <Editors>
                    <ext:TreeEditor ID="TreeEditor1" runat="server" CancelOnBlur="true">
                        <Field>
                            <ext:TextField ID="TextField1" runat="server"/>
                        </Field>
                    </ext:TreeEditor>
                </Editors>
                <SelectionSubmitConfig Encode="true" />
                
                <Listeners>
                    <ContextMenu Fn="showMenu" StopEvent="true" />
                </Listeners>
            </ext:TreePanel>
        </form>
    </body>
    </html>
    Thanks

    Jimmy
    Last edited by Daniil; Feb 14, 2012 at 1:28 PM. Reason: [CLOSED]
  2. #2
    Hi,

    By default, Menu is rendered out of a form, but FileUploadField must be inside a form to submit its file.

    Please set up RenderToForm="true" for the Menu.
  3. #3
    Hi Daniil,

    It work's fine.

    Thank you.

    Jimmy

Similar Threads

  1. MVC: problem with FileUploadField
    By Iban in forum 1.x Help
    Replies: 1
    Last Post: Jan 20, 2011, 3:40 PM
  2. [CLOSED] ComponentMenuItem: the best way to hide/deactivate?
    By capecod in forum 1.x Legacy Premium Help
    Replies: 5
    Last Post: Nov 05, 2010, 10:43 AM
  3. [CLOSED] problem with Icons in ComponentMenuItem
    By pil0t in forum 1.x Legacy Premium Help
    Replies: 1
    Last Post: May 11, 2010, 1:11 PM
  4. [CLOSED] Bug with .ToScript() for ComponentMenuItem
    By pil0t in forum 1.x Legacy Premium Help
    Replies: 1
    Last Post: May 05, 2010, 4:25 PM
  5. Crazy problem with FileUploadField
    By hbbazan in forum 1.x Help
    Replies: 3
    Last Post: Feb 05, 2010, 9:54 AM

Posting Permissions