Jquery + DBGrid — работа с select, часть вторая..
Задача: сделать в ячейке DBGrid выбираемое значение, которое подгружается запросом. Решено частично — не смог решить вопрос с повторной подгрузкой этих значений (загружается 1! раз, после отрисовки таблицы), после например выбора каждой строчки таблицы (вдруг изменились). Т.е. если во время редактирования, состав выбора изменился — пока решение перегрузить страницу. К сожалению триггер .trigger(‘reloadGrid’); не срабатывает..
Клиентская часть кода:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
jQuery("#list10_d").jqGrid({ height: 100, width:780, url:'controller/server/libre_place_sub.php', datatype: "json", colNames:['Id', 'Человек', 'Действия'], colModel:[ {name:'places_users.id',index:'places_users.id', width:55}, {name:'name',index:'name', width:200,editable:true,edittype:"select",editoptions:{ editrules: { required: true }, dataUrl: 'controller/server/getlistusers.php?orgid='+$("#sel_orgid :selected").val() }}, {name: 'myac', width:80, fixed:true, sortable:false, resize:false, formatter:'actions',formatoptions:{keys:true}} ], rowNum:5, pager: '#pager10_d', sortname: 'places_users.id', scroll:1, viewrecords: true, sortorder: "asc", caption:"Кто здесь сидит" }).navGrid('#pager10_d',{add:true,edit:false,del:false,search:false}); }; |
Серверная выдача строк таблицы:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
$page = $_GET['page']; // get the requested page $limit = $_GET['rows']; // get how many rows we want to have into the grid $sidx = $_GET['sidx']; // get index row - i.e. user click to sort $sord = $_GET['sord']; // get the direction $oper= $_POST['oper']; $orgid = $_GET['orgid']; $id = $_POST['id']; $orgid = $_GET['orgid']; $placesid = $_GET['placesid']; $name= $_POST['name']; $comment= $_POST['comment']; //echo "!$placesid!"; if ($oper=='') { if(!$sidx) $sidx =1; $result = mysql_query("SELECT COUNT(*) AS count FROM places_users"); $row = mysql_fetch_array($result); $count = $row['count']; if( $count >0 ) {$total_pages = ceil($count/$limit);} else {$total_pages = 0;}; if ($page > $total_pages) $page=$total_pages; $start = $limit*$page - $limit; $SQL = "SELECT places_users.id AS plid,placesid,userid,users.login as name FROM places_users INNER JOIN users ON users.id=userid WHERE placesid='$placesid' ORDER BY $sidx $sord LIMIT $start , $limit"; //echo "!$SQL!"; //die(); $result = mysql_query( $SQL ) or die("Не могу выбрать список помещений/пользователей!".mysql_error()); $responce->page = $page; $responce->total = $total_pages; $responce->records = $count; $i=0; while($row = mysql_fetch_array($result)) { $responce->rows[$i]['id']=$row[plid]; $responce->rows[$i]['cell']=array($row[plid],$row[name]); $i++; } echo json_encode($responce); }; if ($oper=='edit') { $SQL = "UPDATE places_users SET userid='$name' WHERE id='$id'"; $result = mysql_query( $SQL ) or die("Не могу обновить данные по помещениям/пользователям!".mysql_error()); }; if ($oper=='add') { $SQL = "INSERT INTO places_users (id,placesid,userid) VALUES (null,'$placesid','$name')"; $result = mysql_query( $SQL ) or die("Не могу добавить помещение/пользователя!".mysql_error()); }; if ($oper=='del') { $SQL = "DELETE FROM places_users WHERE id='$id'"; $result = mysql_query( $SQL ) or die("Не могу удалить помещение/пользователя!".mysql_error()); }; |
Серверная выдача выбора select:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
<? include("../../inc/class/config.php"); // загружаем классы настроек $cfg=new Tconfig; include("../../config.php"); // загружаем основные настройки, которых нет в БД include("../../inc/connect.php"); // соеденяемся с БД, получаем $cfg->base_id $orgid=$_GET['orgid']; if ($user->mode!="1") { $SQL = "SELECT * FROM users WHERE orgid='$orgid' AND active=1 ORDER BY login"; $result = mysql_query( $SQL ) or die("Не могу выбрать список пользователей!".mysql_error()); $sts="<select name=suserid>"; while($row = mysql_fetch_array($result)) { $sts=$sts."<option value=$row[id]>$row[login]</option>"; }; $sts=$sts."</select>"; echo $sts; } else {echo "Не достаточно прав!!!";} ?> |