2011-01-19 4 views
0

я пытаюсь изменить текст на кнопке динамически, которая находится в панели:Как изменить динамический текст макета?

исходный текст я дал это: var gost = "HPCL Jan 20 Put,40 cents ..";

var bottomdetail = new Ext.Panel({ 
    flex:1, 
    padding: 1, 
    layout : { 
       type: 'vbox', 
       pack: 'center', 
       align: 'stretch' 
      }, 
    stretchX: true, 
    items:[{ 
      xtype: 'button', 
      flex: 1, 
      baseCls: 'round', 
      html: '<table border="0" height="100%" width="100%"><tr><td width="100%" style="color:#fff; padding-left:5px;" valign="middle">'+ gost + '</td><td valign="middle" align="right" style="padding-right:5px;"><img src="resources/Images/rightarrow.png"></img></td></tr></table>', 
      handler: function(){window.location='DetailsPanel.html';} 
      }] 
}); 

вот Пайонт, где я использую его изменить текст:

var shakepanel = new Ext.Panel({  
           layout : { 
              type: 'hbox', 
              pack: 'center', 
              align: 'stretch' 
             }, 
           stretchX: true, 
           flex:1, 
           disable: true, 
           items: [{ 
             xtype: 'button', 
             disable: true, 
             layout: 'fit', 
             ui: 'decline', 
             text: 'SHAKE', 
             flex:1, 
             handler: function(){ 
              gost="ola i changed it"; 
              alert(bottomdetail.getText()); 
              } 
            }] 
         });  

, когда я нажимаю на кнопку «Shake» значения из «гост» обновляется, но как применить обновленный текст ГОСТа к bottomdetail панели, которая имеет кнопку в нем ... ..........

ответ

0

Ext. Объекты Button имеют метод .setText (newText). Так что-то подобное (весьма перефразировать):

var button = new Ext.Button({ 
    title: 'Text1', 
}); 

var bottomdetail = new Ext.Panel({ 
    items:[button] 
}); 

var shakepanel = new Ext.Panel({ 
    items: [{ 
     xtype: 'button', 
     handler: function() { 
      button.setText('Text2'); 
     } 
    }] 
});  

... 

Я не совсем уверен, почему вы размещаете весь HTML-таблицы внутри кнопки, но ... надеюсь, вы поняли идею.

Если вы пытаетесь связать изменение данных с компонентом (например, кнопкой или панелью), возможно, внутри произвольного HTML, например, вы можете изучить параметр tpl, который создает шаблон, который вы можете затем .update()

+1

Но button.setText не работает, и getCmp не имеет setText. – SteveCav

0

Добавьте идентификатор к TD с динамическим текстом в таблице макета, скажем 'id = titleCell'.

Затем вызовите эту функцию после того, как вы обновили текст, чтобы удалить существующий текстовый узел в этой ячейке и добавить новый.

 
function updateTitle() { 
    var titleCell = document.getElementById('titleCell'); 
    var updatedTitleText = document.createTextNode(gost); 

    titleCell.removeChild(titleCell.firstChild); 
    titleCell.appendChild(updatedTitleText); 
} 

Вы можете назвать это непосредственно после того, как вы обновите ваш гост вар

+1

Вы можете быть более конкретным, я попытался использовать это, но ничего не сделал ............ –

+0

Вы также добавили идентификатор в ячейку, содержащую ваш текст? – adamdunne

0

Что не довершение bottomdetail и shakepanel? - должны быть ПАПА (новый разговор с братом всегда Папе) ....

  • В shakepanel -> кнопка -> обработчик: fireEvent ('gostChanged', гост)
  • Скажите Papa, чтобы слушать (в слушателе или. методе)
  • Когда поймают ПАПА изменит HTML на bottomdetail -> кнопка (это будет приятно иметь реф: там для более легкого доступа вместо Ext.getComp или другого поиска)
Смежные вопросы