发现CGridView在IE下不能很好的搜索,搜索框不能获取焦点(点击搜索框后,input不能获取焦点),而且貌似响应的时鼠标点击事件;
同时CDataColumn的header属性出现问题,如果要写header,必须同时赋给name属性值,否则出现model的"."属性不存在。
发现CGridView在IE下不能很好的搜索,搜索框不能获取焦点(点击搜索框后,input不能获取焦点),而且貌似响应的时鼠标点击事件;
同时CDataColumn的header属性出现问题,如果要写header,必须同时赋给name属性值,否则出现model的"."属性不存在。
传说中这个column要搜索必须使用name属性,但如果是关联表的字段,在rules中search场景中又不能方便的使用关联表的属性,难道要建立一个虚拟属性(非本模型的字段)用以指向关联表的属性;
貌似还有另外一个bug.就是如果先输入一定的条件搜索之后,再“翻页”,然后在去改变这个搜索条件,从新搜索,就会出问题(搜索条件都不能再现),搜索不成功;次例子可以用yii blog程序去验证(当然你的去掉urlmanager中的rules规则),只有加上次url的rules才不会出现这个bug。
关于最后一个问题,如果关闭路由重写是没有问题。
IE的bug我想是由于:
$(inputSelector).live($.browser.msie ? 'click keyup' : 'change', function(){
var data = $.param($(inputSelector))+'&'+settings.ajaxVar+'='+id;
$.fn.yiiGridView.update(id, {data: data});
});
这里给IE绑定的click事件引起的。一开始绑定click事件,导致我们一旦鼠标点击input type="text"准备输入查询信息后,就去去搜索,而且这之后,焦点又会丢失。这使得我们很难在input type="text"下输入有效信息。二是在select intput下,当我们需点击下拉列表时(还未选中任何一个选项)已近触发了click事件,则发送请求去更新当前的gridview。这时我们依然很难去选中下拉列表中的任意一个选项。
在jquery1.4中,live已近可以支持change类型的事件了,但是IE与其他浏览器貌似对待change事件在select元素上是有差别的.IE严格遵守该事件的发生时"失去焦点",而firefox貌似强化了这一事件在select元素下触发机制;
谢谢,不知谁有能如何解决这个问题?使得ie在这一gridview下表现能力如firefox如出一辙呢?
附加我的修改:
$(inputSelector).live($.browser.msie ? 'keyup' : 'change', function(e){
if ($.browser.msie) {
var code = (e.keyCode ? e.keyCode : e.which);
if(code != 13) {
return;
}
}
var data = $.param($(inputSelector))+'&'+settings.ajaxVar+'='+id;
$.fn.yiiGridView.update(id, {data: data});
});
这导致了必须按下enter健才发会触发搜索。但是默认input text在firefox下也必须这样。
jquery 1.4.2对change事件在IE上的live支持有bug。只能等新版本的出现了。目前我们的做法是一个workaround,不是很完美。
关于在CGridView中使用关联表的字段是,貌似有几个问题。
我希望显示关联表的属性值,relation.attribute,值能正确显示出来,可是我们的header并不是我们在relation model中定义的那样,而是用relation Attribute自动生成Relation Attribute这一header.
关于使用该关联表的某一属性排序,搜索时。这是也会出现很多的问题。比如,使用relation.attribute时,我们的在该列的sort会失效,同时也不能进行搜索。(关于第二个问题也许是我的做法有问题,不知您们有没有遇到该情形?)现在我解决2的方法就是在第一个model中大量放置pulbic attribute去对应relation model中的attribute.
期待这个问题的解决啊 ·····
是blog demo 中post和luckup的关系吗?
I also have the problem, help me please!
我是使用livequery解决这个问题。
svn里已经更正这个问题了。我们将在9月初发布新版本。