天天看点

Extjs动态改变window的内容和fbar

Extjs动态改变window的内容和fbar,实现类似翻页的导航。

今天做项目时,经理要求我实现win上的翻页功能,通过标题进行上一页和下一页的导航功能,查阅了相关资料后,实现了如下的效果,当标题超过20个字符时,进行截取,并加上省略号。

Extjs动态改变window的内容和fbar

动态改变win内容的思路:先通过win获取到存放内容的panel,然后将panel中调用panel的removeAll()方法,将panel中所有内容移除掉(如果不remove的话,点击下一条的内容会追加到本页内容的下面),然后将新的内容追加到panel中。

获取到win的核心代码如下:

var content = App.AnnouncementLoginHTMLWin(win.result[0].content);//获取panel中应该放入的最新内容

var panel = win.find('itemId','contentItemId')[0];

panel.removeAll();

panel.add({

xtype:'label',

html: content

});

win.doLayout();

动态改变fbar内容的思路:先通过win获取到toolbar,然后再获取到button,通过调用button的setText()方法,动态的改变按钮的text内容。核心代码如下:

var toolbar = win.getFooterToolbar();

var preBut = toolbar.findByType('button')[0];

//动态改变上一页的值

if(preText == ""){

preBut.setText("<font size=2>上一条:</font><font color='red'>没有记录了</font>");

}else{

preText = App.replaceStr(preText,win.strLen);
preBut.setText("<font size=2>上一条:</font><font color='blue'>"+preText+"</font>");

}

//动态改变下一条的值

var nextBut = toolbar.findByType('button')[1];

if(nextText == ""){

nextBut.setText("<font size=2>下一条:</font><font color='red'>没有记录了</font>");

}else{

nextText = App.replaceStr(nextText,win.strLen);
nextBut.setText("<font size=2>下一条:</font><font color='blue'>"+nextText+"</font>");

}

App.replaceStr=function(str,num){

//如果字符串长度没有超过指定长度,则不截串

if(str.length<=num){
return str;

}else{

str = str.substring(0,num)+"...";

}

return str;

}

在实现过程中,遇到过一个问题,就是传递到html中的内容是 &lt;div align=&amp;quot;center&amp;quot;&gt; 这种格式的,放入html中后,ext自动编译成了<div>这种格式,但是这不是我想要的结果,我想要的是html自动将<div>样式识别后的样式。最后在将 &lt;div align=&amp;quot;center&amp;quot;&gt; 这种格式的字符串传递给html前,先用Ext.util.Format.htmlDecode(content) 对内容进行转码,转换成<div>这种样式后,再将转后的字符串传递给html,html就能识别<div>,并能正确的显示样式了

继续阅读