[CLOSED] Add DirectEvent Params to Button Click during another DirectEvent.

  1. #1

    [CLOSED] Add DirectEvent Params to Button Click during another DirectEvent.

    Hi,
    I'm building a form dynamically during a direct event. that part works great.
    But I'd also like to pass back the as parameters each textbox id to the DirectEvent.Click of a button that is on the form already (ie, not dynamically created)

    I'm using : this.btnSave.DirectEvents.Click.ExtraParams.Add(pa ra);

    However, when I click the button, my params aren't there...I'm I adding these the wrong way?

       [DirectMethod]
            public void InitializeSettingsWindow(string componentId, string userPortletId)
            {
    
    
    
    
                var fieldSet = new FieldSet
                {
                    Title = "Portlet Parameters"
                };
    
    
                var form = new FormPanel
                {
                    ID = "FormTaskPanel1",
                    RenderFormElement = false,
                    Border = false,
                    AutoHeight = true,
                    AutoScroll = true,
                  
                    LabelWidth = 150,
                    LabelAlign = LabelAlign.Right,
                    Padding = 0
                };
    
    
                form.Items.Add(fieldSet);
    
    
                //pass along userPortletID as a DirectEvent Param
                Ext.Net.Parameter para = new Ext.Net.Parameter()
                {
                    Name ="userPortletId",
                    Value = userPortletId,
                    Mode = ParameterMode.Value
                };
                this.btnSave.DirectEvents.Click.ExtraParams.Add(para);
    
    
    
    
                try
                {
                    UserPortletData portlet =  PortletManager.GetUserPortlet(Guid.Parse(userPortletId));
                    if ( portlet.Params.Count > 0 )
                    {
    
    
                        foreach ( UserPortletParam param in portlet.Params )
                        {
    
    
                            //create text box for each param, add
                            TextField t = new TextField();
                            t.FieldLabel = param.ParamKey;
                            t.ID = param.UserPortletParamId.ToString();
                            t.Text = param.ParamValue;
    
    
                           
                            fieldSet.Items.Add(t);
    
    
                            //Add direct event call back for each paramert
                            para = new Ext.Net.Parameter()
                            {
                                Name = param.UserPortletParamId.ToString(),
                                Value = string.Format("{0}.getValue()", t.ClientID),
                                Mode = ParameterMode.Raw 
                            };
                            this.btnSave.DirectEvents.Click.ExtraParams.Add(para);
    
    
    
    
                        }
                    }
    
    
     
    
    
                    form.Render(this.winSettings, RenderMode.AddTo);
    
    
                }
                catch ( Exception e )
                {
                    Ext.Net.ResourceManager.AjaxSuccess = false;
                    Ext.Net.ResourceManager.AjaxErrorMessage = e.Message;
                }
            }
    Last edited by Daniil; Aug 08, 2011 at 1:26 PM. Reason: [CLOSED]
  2. #2
    Hi,

    That code renders nothing during DirectEvent.
    this.btnSave.DirectEvents.Click.ExtraParams.Add(...);
    I can suggest you something like this.

    Example

    <%@ Page Language="C#" %>
    
    <%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %>
    
    <script runat="server">
        protected void TestDirectEventHandler(object sender, DirectEventArgs e)
        {
            X.Msg.Alert("DirectEvent", e.ExtraParams.Count).Show();
        }
    
        protected void AddParameter(object sender, DirectEventArgs e)
        {
            object p = new { 
                name = "newParam",
                value = "newParam",
            };
    
            X.Js.Call("addParameter", new JRawValue(Button1.ClientID), p);
        }
    </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 runat="server">
        <title>Ext.Net Example</title>
    
        <script type="text/javascript">
            var onBefore = function (button, extraParams) {
                if (button.clickExtraParam) {
                    extraParams[button.clickExtraParam.name] = button.clickExtraParam.value;
                } 
            };
    
            var addParameter = function (button, p) {
                if (!button.clickExtraParam) {
                    button.clickExtraParam = {};
                }
                button.clickExtraParam.name = p.name;
                button.clickExtraParam.value = p.value;   
            };
        </script>
    </head>
    <body>
        <form runat="server">
            <ext:ResourceManager runat="server" />
            <ext:Button ID="Button1" runat="server" Text="DirectEvent with ExtraParams">
                <DirectEvents>
                    <Click OnEvent="TestDirectEventHandler" Before="onBefore(this, extraParams)">
                        <ExtraParams>
                            <ext:Parameter Name="someParam" Value="someParam" Mode="Value" />
                        </ExtraParams>    
                    </Click>
                </DirectEvents>
            </ext:Button>
            <ext:Button runat="server" Text="Add an extra parameter" OnDirectClick="AddParameter" />
        </form>
    </body>
    </html>
  3. #3
    I had opened a thread in 2.x but created an example in 1.x to simplify things.

    Here is my example, which attempts to recreate your example only in VB.net. The click of both buttons call the direct events but tracing through the added parameter is not present and for some reason the TestDirectEventHandler does not show a dialog box.

    <%@ Page Title="" Language="vb" AutoEventWireup="false" CodeBehind="GridTest3.aspx.vb" Inherits="Adhesion.Web.GridTest3" %>
    <%@ Register Assembly="Ext.Net.v1" Namespace="Ext.Net.v1" TagPrefix="ext" %>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head id="Head1" runat="server">
        <title>Ext.Net Example</title>
    
        <script type="text/javascript">
            var onBefore = function (button, extraParams) {
                if (button.clickExtraParam) {
                    extraParams[button.clickExtraParam.name] = button.clickExtraParam.value;
                }
            };
    
            var addParameter = function (button, p) {
                if (!button.clickExtraParam) {
                    button.clickExtraParam = {};
                }
                button.clickExtraParam.name = p.name;
                button.clickExtraParam.value = p.value;   
            };
        </script>
     </head>
    <body>
        <form id="Form1" runat="server">
     
        <ext:ResourceManager ID="ResourceManager" runat="server" />
            <ext:Button ID="Button1" runat="server" Text="DirectEvent with ExtraParams">
                <DirectEvents>
                    <Click OnEvent="TestDirectEventHandler" Before="onBefore(this, extraParams)">
                        <ExtraParams>
                            <ext:Parameter Name="someParam" Value="someParam" Mode="Value" />
                        </ExtraParams>    
                    </Click>
                </DirectEvents>
            </ext:Button>
            <ext:Button ID="Button2" runat="server" Text="Add an extra parameter" OnDirectClick="AddParameter" />
        </form>
    </body>
    </html>
    Public Class GridTest3
        Inherits System.Web.UI.Page
    
        <DirectMethod()>
        Public Sub AddParameter(sender As Object, e As DirectEventArgs)
            Dim p = New With {.name = "key2", .value = "ButtonOne"}
            Ext.Net.X.Js.Call("addParameter", New JRawValue(Button1.ClientID), p)
    
        End Sub
    
        <DirectMethod()>
        Public Sub TestDirectEventHandler(sender As Object, e As DirectEventArgs)
            Ext.Net.X.Msg.Alert("DirectEvent", e.ExtraParams.Count).Show()
        End Sub
    End Class
  4. #4
    Your code works for me. I just organized it as a standalone sample.

    What Ext.NET version do you use?

    Example
    <%@ Page Language="vb" %>
    
    <%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %>
    
    <script runat="server">
        Public Sub AddParameter(sender As Object, e As DirectEventArgs)
            Dim p = New With {.name = "key2", .value = "ButtonOne"}
            Ext.Net.X.Js.Call("addParameter", New JRawValue(Button1.ClientID), p)
        End Sub
     
        Public Sub TestDirectEventHandler(sender As Object, e As DirectEventArgs)
            Ext.Net.X.Msg.Alert("DirectEvent", e.ExtraParams.Count).Show()
        End Sub
    </script>
    
    <html>
    <head runat="server">
        <title>Ext.NET v2 Example</title>
    
        <script>
            var onBefore = function (button, extraParams) {
                if (button.clickExtraParam) {
                    extraParams[button.clickExtraParam.name] = button.clickExtraParam.value;
                }
            };
    
            var addParameter = function (button, p) {
                if (!button.clickExtraParam) {
                    button.clickExtraParam = {};
                }
                button.clickExtraParam.name = p.name;
                button.clickExtraParam.value = p.value;
            };
        </script>
    </head>
    <body>
        <form runat="server">
    
            <ext:ResourceManager runat="server" />
    
            <ext:Button ID="Button1" runat="server" Text="DirectEvent with ExtraParams">
                <DirectEvents>
                    <Click OnEvent="TestDirectEventHandler" Before="onBefore(this, extraParams)">
                        <ExtraParams>
                            <ext:Parameter Name="someParam" Value="someParam" Mode="Value" />
                        </ExtraParams>
                    </Click>
                </DirectEvents>
            </ext:Button>
            <ext:Button ID="Button2" runat="server" Text="Add an extra parameter" OnDirectClick="AddParameter" />
        </form>
    </body>
    </html>
  5. #5
    Quote Originally Posted by Daniil View Post
    Your code works for me. I just organized it as a standalone sample.

    What Ext.NET version do you use?
    ext.net version one - 1.7.0.0

    It is working now. It is because we have both v1 and v2 of ext.net in our project and there was a conflict.
    Last edited by rmelancon; Mar 18, 2014 at 7:57 PM.
  6. #6
    Yes, unfortunately, Ext.NET v1.x and v2.x dlls cannot work together.

Similar Threads

  1. Replies: 1
    Last Post: Jun 09, 2011, 7:04 PM
  2. [CLOSED] Adding a button directevent in a directevent method
    By ogokgol in forum 1.x Legacy Premium Help
    Replies: 1
    Last Post: May 31, 2011, 10:29 AM
  3. [CLOSED] Button CLICK directevent & listener timeout
    By webclouder in forum 1.x Legacy Premium Help
    Replies: 3
    Last Post: Apr 05, 2011, 10:10 PM
  4. [CLOSED] Button's Click DirectEvent Single property needs to be reset
    By SFritsche in forum 1.x Legacy Premium Help
    Replies: 5
    Last Post: Oct 23, 2010, 1:08 PM
  5. Replies: 2
    Last Post: Oct 22, 2010, 11:04 AM

Tags for this Thread

Posting Permissions