[CLOSED] Problem selecting items in Combobox

  1. #1

    [CLOSED] Problem selecting items in Combobox

    Hi, i'm updating a combobox based on whats selected in a grid.

    I'm updating the data successfuly, but then i cannot select the items of the combo. Any idea of why? How can i solve this?

    Thanks!

    Here's my code:
    <%@ Page Language="C#" %>
    
    <%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %>
    <script runat="server">
        class SomeClass
        {
            public string ID { get; set; }
            public string Test { get; set; }
        }
        void Page_Init(object sender, EventArgs e)
        {
            Configure();
        }
    
        void Page_Load(object sender, EventArgs e)
        {
            LoadData();
        }
        protected void Configure()
        {
            if (UserCanChangeData())
            {
                GridPanel1.SelectionModel.Add(new CheckboxSelectionModel());
            }
            else
            {
                GridPanel1.SelectionModel.Add(new RowSelectionModel() { SingleSelect = true });
            }
            ((RowSelectionModel)GridPanel1.SelectionModel.First()).DirectEvents.RowSelect.Event += new ComponentDirectEvent.DirectEventHandler(RowSelect_Event);
            ((RowSelectionModel)GridPanel1.SelectionModel.First()).DirectEvents.RowDeselect.Event += new ComponentDirectEvent.DirectEventHandler(RowDeselect_Event);
    
            Store store = this.GridPanel1.GetStore();
            JsonReader reader = new JsonReader();
            reader.IDProperty = "ID";
            reader.Fields.Add(new RecordField("id") { Mapping = "ID" });
            reader.Fields.Add(new RecordField("test") { Mapping = "Test" });
            store.Reader.Add(reader);
    
    
            JsonReader jr = new JsonReader();
            jr.Fields.Add(new RecordField("id") { Mapping = "ID" });
            jr.Fields.Add(new RecordField("test") { Mapping = "Test" });
            comboGenerico.GetStore().Reader.Add(jr);
            
            
        }
        
        List<SomeClass> GetComboData()
        {
            List<SomeClass> datas = new List<SomeClass>();
            
            Dictionary<string, List<SomeClass>> mixedData = new Dictionary<string, List<SomeClass>>();
    
            mixedData.Add("id1",
            new List<SomeClass>() 
            {
                new SomeClass() { ID="1", Test="ID1 - 23"},
                new SomeClass() { ID="2", Test="ID1 - 34"},
                new SomeClass() { ID="3", Test="ID1 - 45"},
                new SomeClass() { ID="4", Test="ID1 - 56"},
                new SomeClass() { ID="5", Test="ID1 - 67"}
            });
            mixedData.Add("id2",
            new List<SomeClass>() 
            {
                new SomeClass() { ID="6", Test="ID2 - 78"},
                new SomeClass() { ID="7", Test="ID2 - 89"},
                new SomeClass() { ID="8", Test="ID2 - 90"},
                new SomeClass() { ID="9", Test="ID2 - 101"}
            });
            mixedData.Add("id3",
            new List<SomeClass>() {
                new SomeClass() { ID="10", Test="ID3 - 102"},
                new SomeClass() { ID="11", Test="ID3 - 103"},
                new SomeClass() { ID="12", Test="ID3 - 104"},
            });
    
            mixedData.Where(kvp => (GridPanel1.SelectionModel.First() as RowSelectionModel).SelectedRows.Any(row => row.RecordID == kvp.Key)).Select(kvp => kvp.Value).ToList().ForEach(data => datas.AddRange(data));
            
            return datas;
        }
        
        void BindCombo()
        {
    
            comboGenerico.GetStore().DataSource = GetComboData();
            comboGenerico.Mode = X.IsAjaxRequest ? DataLoadMode.Remote : DataLoadMode.Local;
            comboGenerico.DisplayField = "test";
            comboGenerico.ValueField = "id";
            comboGenerico.DataBind();
            comboGenerico.Update();
        }
    
        void RowSelect_Event(object sender, DirectEventArgs e)
        {
            X.Msg.Notify("Selecting ", GetSelectedids().Count > 0 ? GetSelectedids().Aggregate((next, prev) => prev + ", " + next) : "").Show();
            BindCombo();
        }
        void RowDeselect_Event(object sender, DirectEventArgs e)
        {
            X.Msg.Notify("Deselecting ", GetSelectedids().Count > 0 ? GetSelectedids().Aggregate((next, prev) => prev + ", " + next) : "").Show();
        }
        protected bool UserCanChangeData()
        {
            //here we check permissions and other stuff
            return true;
        }
        protected void LoadData()
        {
            Store store = this.GridPanel1.GetStore();
            store.DataSource = new object[]
                {
                    new SomeClass()
                    {
                        ID = "id1",
                        Test = "test1"
                    },
                    new SomeClass()
                    {
                        ID = "id2",
                        Test = "test2"
                    },
                    new SomeClass()
                    {
                        ID = "id3",
                        Test = "test3"
                    }
                };
            store.DataBind();
        }
        protected void Load(object sender, DirectEventArgs e)
        {
            LoadData();
        }
    
        protected void Select(object sender, DirectEventArgs e)
        {
    
            X.Msg.Notify("Already Selected", GetSelectedids().Count > 0 ? GetSelectedids().Aggregate((next, prev) => prev + ", " + next) : "").Show();
    
            RowSelectionModel selModel = this.GridPanel1.GetSelectionModel() as RowSelectionModel;
    
            selModel.SelectedRows.Clear();
            selModel.SelectedRows.Add(new SelectedRow("id1"));
            selModel.SelectedRows.Add(new SelectedRow("id3"));
            selModel.UpdateSelection();
        }
    
        protected void GetSelected(object sender, DirectEventArgs e)
        {
            RowSelectionModel selModel = this.GridPanel1.GetSelectionModel() as RowSelectionModel;
            StringBuilder rows = new StringBuilder();
            foreach (SelectedRow row in selModel.SelectedRows)
            {
                rows.Append(String.Format("Index: {0}; RecordID: {1}<br/>", row.RowIndex, row.RecordID));
            }
            X.Msg.Notify("Selected", rows.ToString()).Show();
        }
    
        protected List<string> GetSelectedids()
        {
            return (this.GridPanel1.GetSelectionModel() as RowSelectionModel).SelectedRows.Select(row => row.RecordID).ToList();
        }
    </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>Ext.NET Example</title>
    </head>
    <body>
        <form id="Form1" runat="server">
        <ext:ResourceManager ID="ResourceManager1" runat="server" />
        <ext:Button ID="Button1" runat="server" Text="Load" OnDirectClick="Load" />
        <ext:Button ID="Button2" runat="server" Text="Select some" OnDirectClick="Select" />
        <ext:Button ID="Button3" runat="server" Text="Get selected" OnDirectClick="GetSelected" />
        <ext:GridPanel ID="GridPanel1" runat="server" AutoHeight="true">
            <Store>
                <ext:Store ID="Store1" runat="server">
                    <Reader>
                    </Reader>
                </ext:Store>
            </Store>
            <ColumnModel ID="ColumnModel1" runat="server">
                <Columns>
                    <ext:Column Header="ID" DataIndex="id" />
                    <ext:Column Header="Test" DataIndex="test" />
                </Columns>
            </ColumnModel>
            <SelectionModel>
            </SelectionModel>
        </ext:GridPanel>
        <div id="Div1" runat="server">
                        <ext:ComboBox ID="comboGenerico" runat="server" EmptyText="Seleccione" TypeAhead="true"
                            ForceSelection="true" MinChars="1" ListWidth="300" PageSize="50" Cls="standardComboBox"
                            ItemSelector="tr.list-item">
                            <Store>
                                <ext:Store ID="storeGenerico" runat="server" />
                            </Store>
                            <Template ID="Template1" runat="server">
                                <Html>
                                </Html>
                            </Template>
                            <Triggers>
                                <ext:FieldTrigger Icon="Clear" HideTrigger="true" />
                            </Triggers>
                            <Listeners>
                                <BeforeQuery Handler="this.triggers[0][ this.getRawValue().toString().length == 0 ? 'hide' : 'show']();" />
                                <TriggerClick Handler="if (index == 0) { this.focus().clearValue(); trigger.hide();}" />
                                <Select Handler="this.triggers[0].show();" />
                            </Listeners>
                        </ext:ComboBox>
        </div>
        </form>
    </body>
    </html>
    Last edited by Daniil; Jan 17, 2012 at 6:56 PM. Reason: [CLOSED]
  2. #2
    Hi,

    Well, you have defined:
    ItemSelector="tr.list-item"
    but it's absent in Template.

    Please remove it and you will be able to select items.

    See also
    http://docs.sencha.com/ext-js/3-4/#!...g-itemSelector
    http://docs.sencha.com/ext-js/3-4/#!/api/String
  3. #3
    Ok, Solved!...

    Really thanks

    I have an issue related to this, but i think that creating another post is more suitable than this one.
  4. #4
    Yes, if the new issue is not tightly related to the current one, please start a new forum.

    Though, if you feel the issues are related, it would be good to cross link between two threads.

Similar Threads

  1. Problem when selecting in a combobox
    By feanor91 in forum 1.x Help
    Replies: 17
    Last Post: Jan 16, 2012, 8:28 AM
  2. combobox item selecting bug ! please help
    By relativ in forum 1.x Help
    Replies: 0
    Last Post: Nov 24, 2009, 4:31 AM
  3. [CLOSED] Selecting all items in a MultiSelect dynamically
    By Etisbew in forum 1.x Legacy Premium Help
    Replies: 1
    Last Post: Aug 19, 2009, 7:14 AM
  4. Add Items to combobox dynamically problem
    By Dgsoft.ru in forum 1.x Help
    Replies: 7
    Last Post: Apr 13, 2009, 4:19 AM
  5. Replies: 6
    Last Post: Mar 20, 2009, 5:39 PM

Tags for this Thread

Posting Permissions