[CLOSED] Multicombo in RowEditor

  1. #1

    [CLOSED] Multicombo in RowEditor

    Hi, I am trying multicombo in RowEditor. I am wondering you could help me with an example of multicombo insteand of ComboBox, like what is in https://examples1.ext.net/#/GridPane...Field_Mapping/ I am not sure how to write renderer works for multicombo

    Thanks for your help!

    <script type="text/javascript">
            var departmentRenderer = function (value) {
                var r = StoreCombo.getById(value);
    
                if (Ext.isEmpty(r)) {
                    return "";
                }
    
                return r.data.Name;
            };
        </script>
    Last edited by Daniil; Oct 14, 2010 at 5:59 PM. Reason: [CLOSED]
  2. #2
    Hi vali1993,

    It can look something like this. Please look at the example.

    Example
    <%@ Page Language="C#" %>
    
    <%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %>
    
    <script runat="server">
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!X.IsAjaxRequest)
            {
                Store store = this.GridPanel1.GetStore();
                store.DataSource = new object[] {
                                             new object[] {"1"},
                                             new object[] {"1,2"},
                                             new object[] {"1,2,3"}
                                    };
                store.DataBind();
            }
        }
    </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 myRenderer = function (value) {
                var values = value.split(MultiCombo1.delimiter),
                    value = [];
                if (values == "") {
                    return "";
                }
                for (var i = 0; i < values.length; i++) {
                    var index = MultiCombo1.store.findExact("value", values[i]),
                        record = MultiCombo1.store.getAt(index);
                    value.push(record.get(MultiCombo1.displayField));       
                }
                return value.join(MultiCombo1.delimiter);;
            };
        </script>
    
    </head>
    <body>
        <form runat="server">
        <ext:ResourceManager runat="server" />
        <ext:GridPanel ID="GridPanel1" runat="server" AutoHeight="true">
            <Store>
                <ext:Store runat="server">
                    <Reader>
                        <ext:ArrayReader>
                            <Fields>
                                <ext:RecordField Name="items" />
                            </Fields>
                        </ext:ArrayReader>
                    </Reader>
                </ext:Store>
            </Store>
            <ColumnModel runat="server">
                <Columns>
                    <ext:Column Header="Test" DataIndex="items">
                        <Renderer Fn="myRenderer" />
                        <Editor>
                            <ext:MultiCombo ID="MultiCombo1" runat="server">
                                <Items>
                                    <ext:ListItem Text="item1" Value="1" />
                                    <ext:ListItem Text="item2" Value="2" />
                                    <ext:ListItem Text="item3" Value="3" />
                                </Items>
                            </ext:MultiCombo>
                        </Editor>
                    </ext:Column>
                </Columns>
            </ColumnModel>
        </ext:GridPanel>
        </form>
    </body>
    </html>
    Last edited by Daniil; Oct 14, 2010 at 5:29 PM. Reason: Formatted code
  3. #3
    Hi,

    I adopted those example to MultiCombo
    <%@ Page Language="C#" %>
    
    <%@ Import Namespace="System.Collections.Generic" %>
    <%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %>
    
    <script runat="server">
        protected void Page_Load(object sender, EventArgs e)
        {
            this.StoreCombo.DataSource = Department.GetAll();
            this.StoreCombo.DataBind();
    
            this.Store1.DataSource = Employee.GetAll();
            this.Store1.DataBind();
        }
    
        public class Employee
        {
            public int ID { get; set; }
            public string Name { get; set; }
            public string Surname { get; set; }
            public List<Department> Departments { get; set; }
    
            public static List<Employee> GetAll()
            {
                return new List<Employee>
                           {
                               new Employee
                                   {
                                       ID = 1,
                                       Name = "Nancy",
                                       Surname = "Davolio",
                                       Departments = Department.GetAll()
                                   },
                               new Employee
                                   {
                                       ID = 2,
                                       Name = "Andrew",
                                       Surname = "Fuller",
                                       Departments = Department.GetAll()
                                   }
                           };
            }
        }
    
        public class Department
        {
            public int ID { get; set; }
            public string Name { get; set; }
    
            public static List<Department> GetAll()
            {
                return new List<Department>
                           {
                               new Department {ID = 1, Name = "Department A"},
                               new Department {ID = 2, Name = "Department B"},
                               new Department {ID = 3, Name = "Department C"}
                           };
            }
        }
    </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>Field Mapping - Ext.NET Examples</title>
        <link href="../../../../resources/css/examples.css" rel="stylesheet" type="text/css" />
    
        <script type="text/javascript">
            var departmentRenderer = function (value) {
                var values = value.split(","),
                    names = [];
    
                Ext.each(values, function(value){
                    names.push(StoreCombo.getById(value).get('Name'));
                });
                
                return names.join(",");
            };
            
            var convertDepartments = function (values) {
                var sValue = [];
                Ext.each(values, function(value, index){
                    sValue.push(value.ID);
                });
                return sValue.join(",");
            };
        </script>
    </head>
    <body>
        <form runat="server">
            <ext:ResourceManager ID="ResourceManager1" runat="server" />
            
            <ext:Store ID="StoreCombo" runat="server">
                <Reader>
                    <ext:JsonReader IDProperty="ID">
                        <Fields>
                            <ext:RecordField Name="ID" />
                            <ext:RecordField Name="Name" />
                        </Fields>
                    </ext:JsonReader>
                </Reader>
            </ext:Store>
            
            <ext:Store ID="Store1" runat="server">
                <Reader>
                    <ext:JsonReader IDProperty="ID">
                        <Fields>
                            <ext:RecordField Name="ID" Type="Int" />
                            <ext:RecordField Name="Name" />
                            <ext:RecordField Name="Surname" />
                            <ext:RecordField Name="Departments" IsComplex="true">
                                <Convert Fn="convertDepartments" />
                            </ext:RecordField>
                        </Fields>
                    </ext:JsonReader>
                </Reader>
            </ext:Store>
            
            <ext:GridPanel 
                EnableViewState="true" 
                AutoHeight="true" 
                runat="server"
                StoreID="Store1" 
                Title="List" 
                Icon="Application">
                <ColumnModel runat="server">
                    
                    <Columns>
                        <ext:Column Header="ID" DataIndex="ID" />
                        <ext:Column Header="NAME" DataIndex="Name" />
                        <ext:Column Header="SURNAME" DataIndex="Surname" />
                        <ext:Column DataIndex="Departments" Header="Department" Width="240">
                            <Renderer Fn="departmentRenderer" />
                            <Editor>                        
                                <ext:MultiCombo 
                                    runat="server" 
                                    Shadow="Drop" 
                                    Mode="Local" 
                                    TriggerAction="All" 
                                    ForceSelection="true"
                                    StoreID="StoreCombo" 
                                    DisplayField="Name" 
                                    ValueField="ID"
                                    />
                            </Editor>
                        </ext:Column>
                    </Columns>
                </ColumnModel>
                <SelectionModel>
                    <ext:RowSelectionModel ID="RowSelectionModel1" runat="server" />
                </SelectionModel>
                <LoadMask Msg="Loading" ShowMask="true" />
            </ext:GridPanel>
        </form>
    </body>
    </html>
  4. #4
    Thank you! Perfect!
  5. #5
    Thanks for the example.

    when uncheck all checkbox or when the grid is intially empty. Error throws as: StoreCombo.getById(...)' is null or not an object .

    Thanks. It will be great if that can be fixed.
  6. #6
    Hi,

    Just add simple check to departmentRender
    if(Ext.isEmpty(value, false)){
                    return;
                }

Similar Threads

  1. [CLOSED] MultiCombo
    By softmachine2011 in forum 2.x Legacy Premium Help
    Replies: 20
    Last Post: Aug 02, 2012, 11:56 AM
  2. [CLOSED] MultiCombo Example Issue
    By cwolcott in forum 2.x Legacy Premium Help
    Replies: 4
    Last Post: Mar 22, 2012, 2:38 PM
  3. [CLOSED] MultiCombo - ReadyOnly
    By ndotis in forum 1.x Legacy Premium Help
    Replies: 2
    Last Post: Aug 04, 2011, 5:32 PM
  4. [CLOSED] MultiCombo and DirectMethod
    By craig2005 in forum 1.x Legacy Premium Help
    Replies: 3
    Last Post: Mar 31, 2011, 1:30 PM
  5. [CLOSED] [1.0] MultiCombo with Store
    By danielg in forum 1.x Legacy Premium Help
    Replies: 4
    Last Post: Apr 13, 2010, 12:47 PM

Posting Permissions