2013-08-20 32 views
6

Tôi vừa mới bắt đầu sử dụng jqGrid và tôi muốn xóa các hàng bằng cách sử dụng nút xóa tùy chỉnh. Tôi đang sử dụng đoạn mã dưới đây:Cách xóa các hàng trong jqgrid

try { 
     var cellValue; 
     var id; 
     jQuery("#editDataGridList").jqGrid({ 
      datatype: "local", 
      width: 900, 
      height: 270, 
      colNames: ['Action', 'Interview id', 'Date of observation', 'Name of enumerator'], 
      onSelectRow: function (id) { 
       debugger; 
       var rowData = jQuery(this).getRowData(id);     
       cellValue = rowData['InterviewId']; 
      }, 
      colModel: [     
       { 
        name: 'actions', index: 'InterviewId', sortable: false, 
        formatter: function (rowId, cellval, colpos, rwdat, _act) { 

         return "<input type='button' id='btnid' value='delete' class='btn' onClick='deleteRecords(" + cellValue + ");' />"; 

        } 
       }, 
       { name: 'InterviewId', index: 'InterviewId' }, 
       { name: 'Date', index: 'Date' }, 
       { name: 'NameOfEnum', index: 'NameOfEnum' } 
      ], 

      multiselect: false, 
      caption: "Edit already entered data" 
     }); 
    } 
    catch (e) { 
     alert(e.message); 
    } 

Đoạn mã trên sử dụng cuộc gọi chức năng này để vượt qua giá trị hàng đã chọn để xóa

function deleteRecords(rowData) { 
    alert(rowData); 
} 

Thật không may là giá trị hàngDữ liệu là không xác định. Làm cách nào để sử dụng cùng một cấu trúc để xóa các hàng?

Trả lời

3

Tôi đã tìm được giải pháp cho vấn đề của riêng mình.

formatter: function (rowId, cellval, colpos, rwdat, _act) { 
     var rowInterviewId = colpos.InterviewId.toString(); 
     return "<input type='button' id='" + rowInterviewId + "' value='delete' class='btn' 
     onClick='deleteRecords(this)' />";  
} 

tôi chỉ chuyển thông tin này như một tham số cho sự kiện onclick nút và trên các cuộc gọi chức năng này có tất cả các đặc tính tôi cần từ nút nhưng một trong những quan trọng nhất là nút id là id phỏng vấn của hàng mà nút đó thuộc về.

10

bạn có thể xóa hàng sử dụng

$('#editDataGridList').jqGrid('delRowData',rowid); 
+0

@Waaqas ... sự cố là tôi không thể truy cập hàng của hàng có chứa nút xóa bằng cách sử dụng mã html nút quay lại ở trên ... nhưng bên trong onSelectRow là hoàn toàn khả thi. – JoseLuke

+1

cũng "delrowdata" không gọi kết thúc. –

+0

viết một phương thức tùy chỉnh, thực hiện cả hai công việc, xóa hàng khỏi ui và back-end bằng ajax. –

1

Biến cellValue không được định nghĩa trong phạm vi tương tự như định dạng xóa của bạn. Bạn có thể thử hai điều:

  1. Chuyển đối số rowId từ trình định dạng của bạn sang chức năng xóa thay vì cellValue.
  2. Khai báo biến ngoài phạm vi của BOTH chức năng và sau đó đặt biến đó thành giá trị ID của hàng đã chọn trong trình xử lý onSelectRow của bạn.
+0

@AJ ... đủ hài hước là trong định dạng chỉ tham số colpos có giá trị của những người khác bao gồm rowId không có giá trị. sau đó khi tôi đặt biến bên ngoài cả hai hàm và đặt biến đó thành giá trị ID của hàng đã chọn trong trình xử lý onSElectRow của tôi, giá trị (rowId) sẽ không thay đổi ngay cả khi tôi nhấp vào các nút đã xóa khác nhau nhưng nó sẽ chỉ thay đổi khi nhấp vào bên ngoài nút xóa trong bất kỳ hàng nào. Tôi nghĩ rằng thách thức là làm thế nào để kết nối các nút để các tế bào coz khi tôi bấm vào một nút nó lưới không có bất kỳ thông tin rằng nút đó trong hàng 1 hoặc 2 vv ... – JoseLuke

+0

Sau đó, bạn phải khai báo một biến bên ngoài của bạn jquery 'ready' gọi, đặt nó vào rowId trong' onSelectRow', và sau đó lấy nó trong trình xử lý xóa của bạn. –

+0

@AJ. Vui lòng chia sẻ chức năng xóa từ nơi hàng thực sự bị xóa khỏi lưới. Trên thực tế tôi không thể tìm ra cách để loại bỏ hàng đó khỏi lưới. – shahjahan

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