2010-06-11 38 views
6

Tôi đang cố bật điều hướng dựa trên hàng đã chọn. Vì vậy, người dùng chọn một hàng từ jQgrid, và khi nhấn hiển thị (có một nút hiển thị cho lưới, tôi thấy chỉnh sửa, thêm vv), nó cần phải đi đến một trang mới dựa trên url (một phần của hàng).Jqgrid: điều hướng dựa trên hàng đã chọn

$(document).ready(function() { 
    function getLink() { 
//  var rowid = $("#customer_list").jqGrid('getGridParam', 'selrow'); 
     var rowid = $("#customer_list").getGridParam('selrow'); 
     var MyCellData = $("#customer_list").jqGrid('getCell', rowid, 'dataUrl'); 
     return MyCellData; 
    } 

    $("#customer_list").jqGrid({ 
     url:'mytestList', 
     editurl:'jq_edit_test', 
     datatype: "json", 
     colNames:['Call Id','Title','dataUrl'], 
     colModel:[ 
      {name:'callId', width:80, search:false}, 
      {name:'title', width:200, sortable:false}, 
      {name:'dataUrl',hidden:true} 
     ], 
     rowNum:10, 
     sortname:'lastUpdated', 
     sortorder: 'desc', 
     pager:'#customer_list_pager', 
     viewrecords: true, 
     gridview: true 
    }).navGrid('#customer_list_pager', 
     {add:true,edit:true,del:false,search:true,refresh:true}, 
     {closeAfterEdit:true, afterSubmit:afterSubmitEvent}, // edit options 
     {addCaption:'Create New something', afterSubmit:afterSubmitEvent, 
     savekey:[true,13]}, // add options 
     {afterSubmit:afterSubmitEvent} // delete options 
    ); 
    $("#customer_list").jqGrid('filterToolbar'); 
}); 

vì vậy, url được chuyển cho mỗi hàng dưới dạng dữ liệuUrl. Tôi đang cố gắng đọc nó và đặt nút. Khi gỡ lỗi thông qua firebug, rowid là 223 (chỉ có 12 hàng trong lưới), và giá trị ô trống. Hiện tại, nút được giữ bên ngoài lưới, nhưng có thể tốt hơn là một phần của vavGrid

cảm ơn.

Trả lời

15

Mã như sau đây có thể giải quyết vấn đề của bạn

$("#customer_list").jqGrid ('navButtonAdd', '#customer_list_pager', 
    { caption: ""/*"Show"*/, buttonicon: "ui-icon-extlink", title: "Show Link", 
     onClickButton: function() { 
      var grid = $("#customer_list"); 
      var rowid = grid.jqGrid('getGridParam', 'selrow'); 
      window.location = grid.jqGrid('getCell', rowid, 'dataUrl'); 
     } 
    }); 
+0

làm việc tuyệt vời .. cảm ơn cho thấy làm thế nào để thiết lập các biểu tượng jqueryui .. tôi đã có một vấn đề với dữ liệu JSON, đó là lý do tại sao các url đã không đọc chính xác ban đầu .. cảm ơn một lần nữa – bsr

4

Bạn chỉ có thể làm cho nút hiển thị là một phần của mỗi hàng trong lưới và sử dụng custom formatter để biến thành URL.

Dựa trên ví dụ trong wiki, có thể bạn sẽ cần một cái gì đó dọc theo dòng của

function myformatter (cellvalue, options, rowObject) 
{ 
    return "<a href=\"" + cellvalue + "\">Show</a>"; 
} 
+0

Tôi đã thử một cách tiếp cận tương tự, bởi làm cho một trong những tế bào một liên kết (formatter: 'showlink', formatoptions: getLink()) .. Tôi có thể biến cột url thành một liên kết như bạn đề nghị, nhưng có thể lãng phí một số không gian. Vẫn không chắc chắn những gì là sai với phương pháp getCell !! – bsr

+0

@bsreekanth: Tôi đoán nó phụ thuộc vào độ rộng của bảng. A * Hiển thị * cột sẽ chỉ thêm 50px hoặc hơn để chiều rộng. Tuy nhiên nó sẽ cho phép mọi người mở các liên kết trong một cửa sổ mới thay vì trong một cửa sổ hiện tại (không chắc chắn chức năng quan trọng của bạn là như thế nào). Nếu không thì giải pháp của Oleg có vẻ như nó hoạt động. – R0MANARMY

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