Спасибо, помогло!morozzz
PHP:'id' =>array('label' => 'Id', 'width' => 100, 'hidden'=> true, 'editable' => true, 'editrules' => array('edithidden' => true), ),
Вот действительно нетривиальная задача, как ни странно.Добрый день. Подскажите как реализовать: есть столбец с раскрывающемся списком сортировки (Все, 1996, 1997, и т.д.). Необходимо что бы при первоначальном выводе таблицы отображалось только одно значение (например "1996"), а затем пользователь мог выбирать любое другое значение из раскрывающегося списка.
Спасибо.
'searchoptions' => array('value' => ..., 'defaultValue' => '1996'),
'searializeGridData' : function(data)
{
data.year = $('#gs_year').val();
return data;
}
В прошлой версии я делал так, к примеруДобрый день. Подскажите как реализовать: есть столбец с раскрывающемся списком сортировки (Все, 1996, 1997, и т.д.). Необходимо что бы при первоначальном выводе таблицы отображалось только одно значение (например "1996"), а затем пользователь мог выбирать любое другое значение из раскрывающегося списка.
Спасибо.
'status' =>array('label' => 'Статус',
'width' => 2,
'align' => 'center',
'db' => "po4ta_status.status_zakaza",
'stype' => 'select',
'searchoptions' => array('value'=> new jqGrid_Data_Value(array("FALSE" => "В пути" , "TRUE" => "Доставлен"))),
'editable' => false, //id is non-editable
),
$_REQUEST['status'] = "FALSE";
Можно js-ивент beforeShowForm использовать.А как я могу добавить в начале и/или в конце ячейки некий код html в зависимости от значения этой или иной ячейки.
Т.е. у меня есть ячейка с checkbox при редактировании, мне нужно вывести графическое изображение рядом с ним в зависимости от его состояния!
Такое возможно?
Если я правильно понял вопрос, тогда попробуйте так:А как я могу добавить в начале и/или в конце ячейки некий код html в зависимости от значения этой или иной ячейки.
Т.е. у меня есть ячейка с checkbox при редактировании, мне нужно вывести графическое изображение рядом с ним в зависимости от его состояния!
Такое возможно?
'Name' =>array('label' => 'Name',
...
'formoptions' => array('elmsuffix' => '<img src="http://..." title="..." alt="..." >'),
),
Всё правильно поняли, спасибо, работает.Если я правильно понял вопрос, тогда попробуйте так:
PHP:'Name' =>array('label' => 'Name', ... 'formoptions' => array('elmsuffix' => '<img src="http://..." title="..." alt="..." >'), ),
Можно попробовать напрямую обращаться к значению в ячейке:Всё правильно поняли, спасибо, работает.
Но если мне допустим нужно вывести различное изображение в зависимости от значения данного параметра.
Я подставил в 'elmsuffix' нужную мне функцию которая возвращает данные в html, это работает. Но не могу понять как мне получить в этой функции значение данной ячейки, чтобы от него разрулить что мне возвращать?
'Name' =>array('label' => 'Name',
...
'formoptions' => array('elmsuffix' => '<input type="button" onClick="document.FormPost.Имя_Ячейки_С_Информацией.value = Function(); >'),
),
$('.ui-jqdialog').find('#col_name').val();
beforeShowForm: function($form)
{
var value = $form.find('#col_name').val();
$form.find('#col_name').after('My fancy suffix for value: ' + value);
}
Прошу прощения, но никак не могу сообразить куда я должен поместить код beforeShowForm... к сожалению в jQuery не силен.Самый простой вариант - вызвать:
Или, действительно, в beforeShowForm. Там передается объект формы в аргументе.PHP:$('.ui-jqdialog').find('#col_name').val();
Если реально какие-то сложные случаи - не нужно стесняться простого jQuery.PHP:beforeShowForm: function($form) { var value = $form.find('#col_name').val(); $form.find('#col_name').after('My fancy suffix for value: ' + value); }
В этом всегда будет принципиального отличие от того же ExtJS, где если для чего-то нет выделенной функции, то тушите свет.
var opts = {beforeShowForm: function($form)
{
var value = $form.find('#show_object').val();
$form.find('#show_object').append('My fancy suffix for value: ' + value);
}};
'show_object' => array('label' => 'Показать',
'db' => 'object.show_i',
'width' => 50,
'hidden' => true,
'editable' => true,
'encode' => false,
'edittype' => "checkbox",
'editrules' => array('required' => true,
'edithidden' => true,
),
'formoptions' => array('elmsuffix' => '<img src="/assets/img/button_red.gif'"),
),
$grid.bind('jqGridAddEditBeforeShowForm', function(event, $form)
{
var row_id = $(this).getGridParam('selrow');
var color = $(this).getCell(row_id, 'show_i') ? 'green' : 'red';
$form.find('#show_object').after('<img src="/asserts/img/button_ ' + color + '.gif">');
});
class User extends jqGrid
{
protected function init()
{
#Set database table
$this->table = 'User';
#Make all columns editable by default
$this->cols_default = array('editable' => true);
#Set columns
$this->cols = array(
'id' =>array('label' => 'ID',
'width' => 10,
'align' => 'center',
'editable' => false, //id is non-editable
),
'first_name'=>array('label' => 'First name',
'width' => 35,
'editrules' => array('required' => true),
),
'last_name' =>array('label' => 'Last name',
'width' => 35,
'editrules' => array('required' => true),
),
);
#Set nav
$this->nav = array('add' => true, 'edit' => true, 'del' => true);
#Add filter toolbar
$this->render_filter_toolbar = true;
}
require "php/jqGridLoader.php";
$loader = new jqGridLoader;
$loader->set("grid_path", 'grids');
$loader->set("db_driver", "PDO");
$loader->set("pdo_dsn" , "mysql:dbname=ХХХХХХХХ;host=localhost");
$loader->set("pdo_user" , "ХХХХХХХХ");
$loader->set("pdo_pass" , "ХХХХХХХХ");
$loader->set('debug_output', true);
$loader->autorun();
Да, отлично, то что нужно.Форма целиком формируется на стороне клиента и использует те данные, которые уже были загружены.
Если данных из основных колонок не хватает, то их можно добавить через скрытые колонки.
Реально удобнее и проще, чем ajax-запросы за каждой мелочью.
Может так?5. Ну и собственно сам вопрос, как же вывести на экран эту самую таблицу User?
<?
$rendered_grid = $loader->render('User');
?>
<script>
<?=$rendered_grid?>
</script>
Большое спасибо.Может так?
jQuery("#list").jqGrid('navButtonAdd', '#pager', {
caption: "", buttonicon: "ui-icon-print", title: "Export",
onClickButton: function(){
exportExcel();
}
});
var mya=new Array();
mya=$("#list").getDataIDs();
var data=$("#list").getRowData(mya[0]);
var colNames=new Array();
var ii=0;
for (var i in data){colNames[ii++]=i;}
var html="";
for(i=0;i<mya.length;i++)
{
data=$("#list").getRowData(mya[i]);
for(j=0;j<colNames.length;j++)
{
html=html+data[colNames[j]]+"\\t";
}
html=html+"\\n";
}
html=html+"\\n";
document.forms[0].csvBuffer.value=html;
document.forms[0].method='POST';
document.forms[0].action='Export.php';
document.forms[0].target='_blank';
document.forms[0].submit();
header('Content-type: application/vnd.ms-excel');
header("Content-Disposition: attachment; filename=file.xls");
header("Pragma: no-cache");
$buffer = $_POST['csvBuffer'];
try{
echo $buffer;
}catch(Exception $e){
}
Добавляю так, кнопка не появляетсяЗачем такой геморрой?)
jQuery("#list").jqGrid('navGrid','#pager',{excel:true,exceltext:'Excel'});
Заголовок ответа:{ "success": "1" }{ "page": "1", "total": null, "count": "1", "rows": [ { "id": "4", "cell": [ "4", "1", "<img src=\"\/assets\/default\/public\/img\/admin\/button_green.gif\">", "20", "Коттеджи", "тест" ] } ], "userdata": { "agg": { "_count": "1" } } }
В firebug отсутствует вкладка JSON, хотя при выводе таблице она есть.Connection Keep-Alive
Content-Length 264
Content-Type application/json; charset=utf-8;
Date Wed, 26 Sep 2012 20:28:30 GMT
Keep-Alive timeout=5, max=100
Server Apache/2.2.4 (Win32) mod_ssl/2.2.4 OpenSSL/0.9.8d PHP/5.2.4
X-Powered-By PHP/5.2.4