CGridView и dialog
CGridView и dialog
Здравствуйте.
Пытаюсь сделать выбор в диалоговом окне как показано на рисунке.
Проблема заключается в том, что при выполнении какого либо действия(перемещение по странице, поиск), JS не воспринимает Новые HTML элементы.
Мне нужно что бы при клике на ссылку выполнялось какое либо действие и закрывалось диалоговое окно.
Пытаюсь сделать выбор в диалоговом окне как показано на рисунке.
Проблема заключается в том, что при выполнении какого либо действия(перемещение по странице, поиск), JS не воспринимает Новые HTML элементы.
Мне нужно что бы при клике на ссылку выполнялось какое либо действие и закрывалось диалоговое окно.
- Вложения
-
- CGridView.jpg (174.94 КБ) 5190 просмотров
Re: CGridView и dialog
Тут чистая javascript в ссылке.
Просто закрой диалоговое окно и все.
Точнее сделай вместо ссылки div + onclick + руку при наведении в css
Просто закрой диалоговое окно и все.
Точнее сделай вместо ссылки div + onclick + руку при наведении в css
Re: CGridView и dialog
Спасибо, пока сделал с onclick, но хотелось бы без использования onclick.
Re: CGridView и dialog
Без использования onclick в принципе невозможно (если не хочешь перезагружать станицу).
Re: CGridView и dialog
а как же jquery?
Так что теоретически возможно наверно.
Код: Выделить всё
$("a").click();
Re: CGridView и dialog
В общем новая проблема с этим же.
В диалоговом окне есть категории и список товаров.(см рисунок)
При клике на категорию Ajax ом подгружается CGridView. Все работает, НО, если мы просмотрели больше 1 категории то при поиске в CGridView сразу идет куча ajax запросов(столько, сколько категорий просмотрели). Я предполагаю что это из за подключаемых JS. Чем больше мы просмотрели категорий, тем больше подключилось JS.
Как быть в такой ситуации?
Актион ShowListProducts
Отображение _products_list
В диалоговом окне есть категории и список товаров.(см рисунок)
При клике на категорию Ajax ом подгружается CGridView. Все работает, НО, если мы просмотрели больше 1 категории то при поиске в CGridView сразу идет куча ajax запросов(столько, сколько категорий просмотрели). Я предполагаю что это из за подключаемых JS. Чем больше мы просмотрели категорий, тем больше подключилось JS.
Как быть в такой ситуации?
Код: Выделить всё
$(".category").click(function(){
var url= "/products/admin/ShowListProducts/id/"+$(this).attr("id").replace("a_","");
$.ajax({
url:url,
type:"post",
success: function(data){
$("#products_list_1").html(data);
}
});
return false;
});
Код: Выделить всё
public function actionShowListProducts($id) {
$id = (int) $id;
$products = new Products("search");
$products->unsetAttributes();
if (isset($_GET['Products']))
$products->attributes = $_GET['Products'];
$products->cid = $id;
$this->renderPartial('_products_list', array("products"=>$products,"cid"=>$cid), false, true);
}
Отображение _products_list
Код: Выделить всё
$this->widget('zii.widgets.grid.CGridView', array(
'id' => 'page-grid-recomend',
'ajaxUrl' => "/products/admin/ShowListProducts/id/" . $cid,
'dataProvider' => $products->SearchCopy(),
'filter' => $products,
'columns' => array(
'bar_code',
'edp_code',
array(
"name" => "name",
'type' => 'raw',
'value' => 'CHtml::link($data->name, "#", array("class"=>"product_select","id"=>$data->id,"onclick"=>"elementSelected($data->id);"))',
),
))
);
- Вложения
-
- CGridView.jpg (182.86 КБ) 5156 просмотров
Re: CGridView и dialog
а что если в первый раз renderPartial вызывать с 4-м параметром true, а в остальные разы с false ?
RTFM !
Re: CGridView и dialog
Это и есть навешивание события onclick на ссылку.Professor писал(а):а как же jquery?Так что теоретически возможно наверно.Код: Выделить всё
$("a").click();
Re: CGridView и dialog
По второму вопросу трудного говорить тут надо смотреть весь комплекс.
Смысл обычной админки - при выборе фильтра подгружается вся страница, но заменяется только определенный div.
У тебя твой див полностью замещается или остаются хвосты?
Смысл обычной админки - при выборе фильтра подгружается вся страница, но заменяется только определенный div.
У тебя твой див полностью замещается или остаются хвосты?
Re: CGridView и dialog
1) да, но вот так вот $("a").click(); почему то не работает, поэтому вопрос и задал. То есть работает, пока аяксом не заменим контент.
2) Вот код который заменяет внутренности при клике на категорию
$("#products_list_1").html(data); вроде как полностью весь див изменяет.
3) because? так получается 1 запрос(то что нужно), но тогда параметр ajaxUrl не меняется, и получается что отображается только одна категория.
2) Вот код который заменяет внутренности при клике на категорию
Код: Выделить всё
$(".category").click(function(){
var url= "/products/admin/ShowListProducts/id/"+$(this).attr("id").replace("a_","");
$.ajax({
url:url,
type:"post",
success: function(data){
$("#products_list_1").html(data);
}
});
return false;
});
$("#products_list_1").html(data); вроде как полностью весь див изменяет.
3) because? так получается 1 запрос(то что нужно), но тогда параметр ajaxUrl не меняется, и получается что отображается только одна категория.
Re: CGridView и dialog
Сделай тестовый вариант и покажи.
Ответы ты видешь через консоль firebug-a?
Ответы ты видешь через консоль firebug-a?
-
- Сообщения: 75
- Зарегистрирован: 2011.01.20, 23:52
Re: CGridView и dialog
Так не пробовали?
Код: Выделить всё
$('a').live('click', function() { ... })
Re: CGridView и dialog
В общем забил на Ajax.
Сделал проще:
1) Расширил jquery.yiigridview.js функцией (хотя на самом деле можно было и не расширять)
при обработке сделал так
Сделал проще:
1) Расширил jquery.yiigridview.js функцией (хотя на самом деле можно было и не расширять)
Код: Выделить всё
$.fn.yiiGridView.setUrl = function(id,url) {
$.fn.yiiGridView.settings[id].url=url;
$('#'+id+' > div.keys').attr('title',url);
};
при обработке сделал так
Код: Выделить всё
$(".category").click(function(){
var category_id=$(this).attr("id").replace("a_","");
$.fn.yiiGridView.setUrl('page-grid-recomend','/products/admin/ShowListProducts/id/'+category_id);
$.fn.yiiGridView.update('page-grid-recomend', {
url: '/products/admin/ShowListProducts/id/'+category_id
});
return false;
});
Re: CGridView и dialog
Код: Выделить всё
$('a').live('click', function() { ... })
Я думал это в Jquery уже по умолчанию включено было.