[CLOSED] DropDownField setting value from code-behind

  1. #1

    [CLOSED] DropDownField setting value from code-behind

    Hi,

    Firstly, I need to set value of DropDownField control from code-behind. And secondly, when I set value of DropDownField, I need value change event for DropDownControl. Can you please help me?

                    <ext:DropDownField ID="DropDownField_Offices" runat="server" Editable="false" Width="220"
                        TriggerIcon="SimpleArrowDown" FieldLabel="Office" EmptyText="Select a office." Mode="ValueText" LazyInit="false">
                        <Component>
                            <extLib:ColumnTree ID="ColumnTree_Object" runat="server" RootVisible="false" Header="false"
                                ShowBottomBar="true" ShowTopBar="true" ShowDeleteButton="false" ShowEditButton="false"
                                AutoScroll="true" ContainerScroll="true" Animate="true" Shadow="None" UseArrows="true"
                                Height="300" AutoFocus="true" ForceLayout="true">
                                <Tools>
                                    <ext:Tool Type="Refresh" Qtip="Refresh" Handler="refresh_ColumnTree_Object(0);" />
                                </Tools>
                                <Columns>
                                    <ext:ColumnTreeColumn Header="Text" Width="250" DataIndex="Text" />
                                </Columns>
                                <Loader>
                                    <ext:TreeLoader>
                                        <UIProviders>
                                            <ext:TreeNodeUIProvider Alias="col" ClassName="<%# Ext.Net.ColumnTree.ColumnNodeUI %>"
                                                AutoDataBind="true" />
                                        </UIProviders>
                                    </ext:TreeLoader>
                                </Loader>
                                <Root>
                                    <ext:TreeNode>
                                    </ext:TreeNode>
                                </Root>
                                <Buttons>
                                    <ext:Button ID="Button_Collapse" runat="server" Text="Close">
                                        <Listeners>
                                            <Click Handler="#{DropDownField_Offices}.collapse();" />
                                        </Listeners>
                                    </ext:Button>
                                </Buttons>
                                <Listeners>
                                    <Click Fn="DropDownField_Offices_Click" />
                                </Listeners>
                                <SelectionModel>
                                    <ext:DefaultSelectionModel ID="DefaultSelectionModel2" runat="server" />
                                </SelectionModel>
                            </extLib:ColumnTree>
                        </Component>
                        <Listeners>
                            <Expand Handler="refresh_ColumnTree_Object(0);this.component.getRootNode().expand(true);" Single="true" Delay="10" />
                            <Change Handler="refresh_ColumnTree_Object(0);" />
                        </Listeners>
                    </ext:DropDownField>

            public void SetUser(fn_GetUser user, UserWindowConfig windowMode)
            {
                TextField_UserID.Text = "";
                TextField_FirstName.Text = "";
                TextField_LastName.Text = "";
                TextField_UserName.Text = "";
                TextField_Password.Text = "";
                ComboBox_UserGroups.ClearValue();
                ComboBox_Departments.ClearValue();
                ComboBox_Regions.ClearValue();
                DropDownField_Offices.Clear();
                TextField_PhoneNo.Text = "";
                TextField_Mail.Text = "";
    
                Hidden_WindowMode.Value = windowMode;
    
                if (windowMode == UserWindowConfig.ChangePassword)
                {
                    TextField_FirstName.Disabled = true;
                    TextField_LastName.Disabled = true;
                    TextField_UserName.Disabled = true;
                    TextField_Password.Disabled = false;
                    ComboBox_UserGroups.Disabled = true;
                    ComboBox_Departments.Disabled = true;
                    ComboBox_Regions.Disabled = true;
                    DropDownField_Offices.Disabled = true;
                    TextField_PhoneNo.Disabled = true;
                    TextField_Mail.Disabled = true;
                }
    
                if (user!=null)
                {
                    TextField_UserID.Text = user.UserID.ToString();
                    TextField_FirstName.Text = user.FirstName;
                    TextField_LastName.Text = user.LastName;
                    TextField_UserName.Text = user.UserName;
                    TextField_Password.Text = user.Password;
    
                    ComboBox_UserGroups.SetValue(user.UserGroupID.ToString());
                    ComboBox_Departments.SetValue(user.DepartmentID.ToString());
                    ComboBox_Regions.SetValue(user.RegionID.ToString());
                    DropDownField_Offices.Value = user.OfficeID;
                    DropDownField_Offices.SetValue(user.OfficeID.ToString());
                    TextField_PhoneNo.Text = user.PhoneNo;
                    TextField_Mail.Text = user.Mail;
                }
            }
    Last edited by Daniil; Dec 15, 2011 at 8:38 AM. Reason: [CLOSED]
  2. #2
    Hi,

    The Change event occurs when a field is focused, then a value is changed and then blur occurs.

    Therefore to achieve your requirement it needs to do these actions - focus and blur - manually.

    It's possible - please see the example below, but I would recommend to consider a solution to call required code without the Change event when you set up a new value.

    Example
    <%@ Page Language="C#" %>
    
    <%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %>
    
    <script runat="server">
        protected void SetValueClick(object sender, DirectEventArgs e)
        {
            X.Js.Call("setValueAndFireChange", new JRawValue(this.DropDownField1.ClientID), "Node1", "[Text1]");
        }
    </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 getValues = function (tree) {
                    var msg = [], 
                        selNodes = tree.getChecked();
                     
                    Ext.each(selNodes, function (node) {
                        msg.push(node.id);
                    });
                    
                    return msg.join(",");
                };
                
                var getText = function (tree) {
                    var msg = [], 
                        selNodes = tree.getChecked();
                    msg.push("[");   
                     
                    Ext.each(selNodes, function (node) {
                        if (msg.length > 1) {
                            msg.push(",");
                        }
                        
                        msg.push(node.text);
                    });
                    
                    msg.push("]");
                    
                    return msg.join("");
                };
                
                var syncValue = function (value) {
                    var tree = this.component;
                    
                    if (tree.rendered) {
                       var ids = value.split(",");
                       tree.setChecked({ids: ids, silent: true});
                       
                       tree.getSelectionModel().clearSelections();
                       Ext.each(ids, function(id){
                           var node = tree.getNodeById(id);      
                           
                           if (node) {
                             node.ensureVisible(function () {
                                tree.getSelectionModel().select(tree.getNodeById(this.id), null, true);
                             }, node);
                           }
                       }, this);
                    }
                };
    
                var setValueAndFireChange = function (field, value, text) {
                    field.focus();
    
                    (function () {
                        field.setValue(value, text);
                        field.triggerBlur();
                    }).defer(100);
                };
            </script>
    </head>
    <body>
        <form runat="server">
            <ext:ResourceManager runat="server" />
            
            <ext:DropDownField 
                ID="DropDownField1" 
                runat="server" 
                UnderlyingValue="Node2,Node3"
                Text="[Text1,Text2]"
                Editable="false" 
                Width="300" 
                Mode="ValueText">
                <Component>
                    <ext:TreePanel 
                        runat="server" 
                        Title="My Task List"
                        Height="300"
                        AutoScroll="true"
                        RootVisible="false"
                        Shadow="None">
                        <Root>
                            <ext:TreeNode>
                                <Nodes>
                                    <ext:TreeNode Text="To Do" Icon="Folder">
                                        <Nodes>
                                            <ext:TreeNode NodeID="Node1" Text="Text1" Leaf="true" Checked="False" />
                                            <ext:TreeNode NodeID="Node2" Text="Text2" Leaf="true" Checked="False" />
                                            <ext:TreeNode NodeID="Node3" Text="Text3" Leaf="true" Checked="False" />
                                        </Nodes>
                                    </ext:TreeNode>
                                </Nodes>
                            </ext:TreeNode>
                        </Root>
                        <Buttons>
                            <ext:Button runat="server" Text="Close">
                                <Listeners>
                                    <Click Handler="#{DropDownField1}.collapse();" />
                                </Listeners>
                            </ext:Button>
                        </Buttons>
                        <Listeners>
                            <CheckChange Handler="this.dropDownField.setValue(getValues(this), getText(this), false);" />
                        </Listeners>
                        <SelectionModel>
                            <ext:MultiSelectionModel runat="server" />
                        </SelectionModel>      
                     </ext:TreePanel>
                </Component>
                <Listeners>
                    <Change Handler="Ext.Msg.alert('Change', oldValue + '<br/>' + newValue);" />
                    <Expand Handler="this.component.getRootNode().expand(true);" Single="true" Delay="20" />
                </Listeners>
                <SyncValue Fn="syncValue" />
            </ext:DropDownField>
        
            <ext:Button runat="server" Text="Set Value" OnDirectClick="SetValueClick" />
       </form>
    </body>
    </html>
  3. #3
    Hi,

    Thank you very much. You can close this thread

Similar Threads

  1. Replies: 1
    Last Post: Dec 31, 2011, 1:20 PM
  2. [CLOSED] Problem setting value iconcombobox in code
    By CarWise in forum 1.x Legacy Premium Help
    Replies: 3
    Last Post: May 24, 2011, 3:04 PM
  3. Replies: 2
    Last Post: May 13, 2011, 7:06 AM
  4. [CLOSED] Setting Combobox value in code behind
    By iansriley in forum 1.x Legacy Premium Help
    Replies: 9
    Last Post: Dec 15, 2010, 7:35 PM
  5. [CLOSED] Setting Store OnRefreshData in code behind
    By deejayns in forum 1.x Legacy Premium Help
    Replies: 6
    Last Post: Dec 02, 2010, 3:30 PM

Posting Permissions