2011-11-09 33 views
6

Tôi đang sử dụng jqGrid, khi chỉnh sửa/thêm hàm Tôi muốn có danh sách thả xuống ở một trong các trường này.jqGrid setChọn chức năng với truy vấn được tham số

này hoạt động nếu tôi sử dụng chức năng setSelect như thế này:

$grid->setSelect("title", "SELECT DISTINCT name,name as TestingName FROM template", true, true, false, array(""=>"All")); 

Làm thế nào tôi có thể vượt qua các thông số để truy vấn của tôi? Tôi cố gắng này:

1- "SELECT DISTINCT name,name as TestingName FROM template where tempid = ?"

2- "SELECT DISTINCT name,name as TestingName FROM template where tempid = $rowid"

3- "SELECT DISTINCT name,name as TestingName FROM template where tempid = ". $rowid

không có ở trên làm việc trong khi có:

if(isset ($_REQUEST["tempid"])) 
    $rowid = jqGridUtils::Strip($_REQUEST["tempid"]); 
else 
    $rowid = ""; 
+0

tôi không thể tìm thấy bất kỳ tài liệu nào về phương thức '-> setSelect' của lớp jqgrid php trên http://www.trirand.com/blog/phpjqgrid/docs/jqGrid/jqGrid.html#sec-method- tóm tắt bạn có thể cung cấp thêm một số thông tin? –

+0

http://www.trirand.net/documentation/php/index.htm -> phần hướng dẫn-> thả xuống – Grace

Trả lời

4

Nếu tôi sửa hiểu câu hỏi của bạn bạn sử dụng editoptions với dataUrl. Bạn muốn có URL có tham số bổ sung tempid giá trị nào sẽ là hàng của hàng được chọn hiện tại.

Từ cú pháp câu hỏi của bạn, tôi giả sử bạn sử dụng một số jqGrid thương mại cho sản phẩm PHP từ trirand.net. Trong trường hợp bạn nên sử dụng thẻ [jqgrid-php]. jqGrid là sản phẩm mã nguồn mở JavaScript thuần túy. Vì vậy, tôi trả lời cách bạn có thể thêm tham số dataUrl trong JavaScript.

jqGrid có ajaxSelectOptions tùy chọn có thể được sử dụng để sửa đổi các jQuery.ajax tùy chọn của cuộc gọi mà sử dụng dataUrl. Bạn có thể làm như sau

var myGrid = $("#list"); 

myGrid.jqGrid({ 
    // all your current parameters of jqGrid and then the following 
    ajaxSelectOptions: { 
     data: { 
      tempid: function() { 
       return myGrid.jqGrid('getGridParam', 'selrow'); 
      } 
     } 
    } 
}); 

Nếu data tham số của jQuery.ajax chứa một phương pháp thay vì một tài sản phương pháp này sẽ được gọi mỗi thời điểm jQuery.ajax cuộc gọi tương ứng. Tôi đã sử dụng cùng một mẹo trong the answer.

+0

tempid là khóa chính của lưới chính, im gửi lưới chi tiết và tôi có thể lấy giá trị của tempid trong lưới chi tiết. vấn đề của tôi là tôi không biết làm thế nào để sử dụng chức năng setSelect để vượt qua truy vấn với tham số – Grace

+0

@Grace: Tôi thấy không có sự khác biệt. Bạn có thể chỉ 'myMasterGrid.jqGrid ('getGridParam', 'selrow');' trong lưới chi tiết. Ngoài ra, bạn có thể lưu id của hàng được chọn hiện tại của lưới chính trong một biến (như 'masterRowId'). Bạn có thể làm điều này bên trong sự kiện 'onSelectRow' của lưới chủ. Sau đó, bạn có thể sử dụng 'tempid: function() {return masterRowId; } ' – Oleg

+0

@Grace: Có thể bạn sử dụng' ajaxSelectOptions' ở sai vị trí. Tôi sửa đổi một chút câu trả lời của tôi để hiển thị rõ ràng hơn rằng bạn nên thêm 'ajaxSelectOptions' vào các tùy chọn jqGrid khác mà bạn sử dụng. – Oleg

Các vấn đề liên quan