Sencha Touch вопрос выбора пункта выбора поля - PullRequest
0 голосов
/ 10 ноября 2011

Вот моя модель и магазин,

    Ext.regModel('Agent', { fields: [{ name: 'userid', type: 'int' }, { name: 'agentname', type: 'string'}] });

App.stores.agentStore = new Ext.data.Store({
    model: 'Agent',
    storeId: 'AgentsStoreid',
    proxy: {
        type: 'ajax',
        url: 'https://abc123.com/wsbrightdoor.asmx/GetAgents?username=abc&password=123',
        reader: { type: 'xml', root: 'root', record: 'salesagent' }
    },
    autoLoad: true
});

    //App.stores.agentStore.load();
    console.log(App.stores.agentStore); 

Я устанавливаю это хранилище для моего элемента выбора вот так

var sel = new Ext.form.Select(
  {
    id: 'Myselectfield',
                             name: 'myagent',
                             label: 'Agent',
                             store: App.stores.agentStore, 
                             displayField: 'agentname',
                             valueFiels: 'userid',
                             placeHolder: 'Click/touch to select options...',
  }); 

Вот мой XML-файл, который сервер возвращает

<?xml version="1.0" encoding="utf-8"?>

<root>

  <salesagent>

    <userid>1</userid>

    <agentname>Name1</agentname>

  </salesagent>

  <salesagent>

    <userid>13</userid>

    <agentname>Name2</agentname>

  </salesagent>

 </root>

Я вижу, что хранилище получает значения от веб-сервера, и я вижу объект данных со значениями имени агента и идентификатора пользователя.Мы используем Sencha Touch 1.1.0.Теперь я могу видеть значения в поле выбора, которые заполняются из веб-службы.Когда я выбираю элемент, выбранный элемент не меняется на выбранный элемент.Я вижу первый элемент в моем магазине как выбранный.Как мы это исправим?Пожалуйста, предложите.

1 Ответ

1 голос
/ 11 ноября 2011

Документация Sencha Touch очень расплывчата. Могло бы быть лучше с некоторыми примерами для каждого свойства и метода, чтобы показать, как его использовать. Вот как я исправил свою проблему. Я должен сделать это с типичным запросом Jquery Ajax.

AgentsArray = new Array(); //Create an Array that saves the Agents    AgentsArray.push({ text: '', value: '0' });


pushAgents = function (data, textStatus, xml_http_req) 
{
    //console.log(data);
    /*read the agents and IDs from XML and build Array*/
    $(data).find('salesagent').each(
                                     function () 
                                     {
                                         var agentName = $(this).find('agentname').text();
                                         var agentId = $(this).find('userid').text();
                                         AgentsArray.push({ text: agentName, value: agentId }); // push the items into Array
                                         //alert(agentName); 
                                     }
                                    );


                                     return AgentsArray;
}


 function somethingWrong() {
     AgentsArray.push('SomethingWentWrong', '0');
 }
App.Agents = AgentsArray; //Save it in the array and this is specified in the Mainform.js(View). 


$.ajax({
            url: 'https://abc.com/def.asmx/GetAgents',
            type: 'GET',
            dataType: 'xml',
            data: 'abc=1&def=1&username=123',
            success: pushAgents, 
            errors: somethingWrong
       });

и в MainForm.js элемент управления select выглядит так

items: [  {
                                     xtype: 'selectfield',
                                     id: 'selectfield',
                                     name: 'agent',
                                     label: 'Agent',
                                     options: App.Agents,
                                     placeHolder: 'Click to select options...',
                                }]
...