2012-02-13 2 views
0

사용자가 클릭 한 행의 필드 값을 원합니다. 이 코드를 작성하지만이 코드는 잘못되었습니다. 인덱스 행 가져 오기 jqGrid에서 클릭

var firstButtonColumnIndex = 0; 
    grid = $('#list'), firstButtonColumnIndex, buttonNames = {}; 

grid.jqGrid({ 
    url: 'jQGridHandler.ashx', 
    datatype: 'local', 
    direction: "rtl", 
    datatype: 'json', 
    height: 250, 
    colNames: ['', ''], 
    colModel: [ 
     { name: 'WorkOrderNo', width: 100, sortable: true }, 
     { name: 'AssetNo', width: 150, sortable: true }, 
     { name: 'WorkDescription', width: 400, sortable: true }, 
     { name: 'WorkOrderDate', width: 100, sortable: true }, 
     { name: 'WorkOrderTime', width: 100, sortable: true }, 
     { name: 'Remark', width: 260, sortable: true }, 
     { name: 'del', width: 20, sortable: false, search: false, 
      formatter: function() { 
       return "<span class='ui-icon ui-icon-trash'></span>" 
      } 
     }, 
     { name: 'details', width: 20, sortable: false, search: false, 
      formatter: function() { 
       return "<span class='ui-icon ui-icon-document'></span>" 
      } 
     } 
    ], 
    gridview: true, 
    rowNum: 10, 
    rowList: [10, 20, 30], 
    pager: '#pager', 
    // sortname: 'WorkOrderNo', 
    viewrecords: true, 
    sortorder: 'asc', 
    rownumbers: true, 
    beforeSelectRow: function (rowid, e) { 
     var iCol = $.jgrid.getCellIndex(e.target); 
     if (iCol >= 7) { 
      alert("rowid=" + rowid + "\nButton name: " + buttonNames[iCol]); 
     } 
     // prevent row selection if one click on the button 
     return (iCol >= firstButtonColumnIndex) ? false : true; 
    } 
}); 

buttonNames[7] = 'Remove'; 
buttonNames[8] = 'Details'; 
grid.jqGrid('navGrid', '#pager', { add: false, edit: false, del: false }, {}, {}, 
    {}, { multipleSearch: true, overlay: false, width: 460 }); 

하지만 beforeSelectRow 이벤트 rowid에서

항상 0 내가 WorkOrderNo 행을 클릭 반환합니다.

plese help me. 모두 감사합니다

답변

1

먼저 게시 한 코드에는 많은 작은 오류가 있습니다. 그래서 그것은 작동하지 않습니다. stackoverflow 게시에 대한 원래 코드를 수정하는 경우 수정 사항을 신중하게 작성하십시오.

예를 들어 :

  • colNames는 두 가지 요소 만 colModel 포함 - 8 요소를. 그래서 배열의 다른 길이에 관한 에러가 발생하고 코드는 더 이상 작동하지 않습니다.
  • 'local' 값을 갖는 하나와 'json' 값을 갖는 하나의 시간을 두 번 지정하여 datatype 옵션을 두 번 정의합니다.
  • firstButtonColumnIndex = 0의 끝으로 세미콜론 (';') 대신 쉼표 (',')를 사용해야합니다 (첫 번째 줄 참조). 현재 코드는 정의되지 않은 grid을 사용하고이를 글로벌 변수로 해석합니다. 주요 질문에 대한

:

당신은 당신의 질문의 제목으로 "있는 jqGrid 인덱스 행 클릭 수 가져 오기"를 사용하지만, 당신은 당신이 그 질문의 텍스트에 쓴 rowid 항상 0 가 아니라 rowIndex입니다. (가) rowIndex 다음에 beforeSelectRow의 코드를 수정할 수 있습니다 효율적으로 활용하려면 다음

beforeSelectRow: function (rowid, e) { 
    var iCol = $.jgrid.getCellIndex(e.target); 
    if (iCol >= 7) { 
     alert("rowid=" + rowid + 
       "\nrowIndex=" + $(e.target).closest("tr.jqgrow")[0].rowIndex + 
       "\nButton name: " + buttonNames[iCol]); 
    } 
    // prevent row selection if one click on the button 
    return (iCol >= firstButtonColumnIndex) ? false : true; 
} 

이 0 당신이 'jQGridHandler.ashx'에서 서버 코드를 생성하는 JSON에 잘못된 id을 채우기 가정에 다음과 항상 rowid으로 한 정보입니다. id의 고유 한 값인이어야합니다. 개발자 도구를 사용하여 행의 id 속성 (표의 <tr> ID)을 확인하거나 FiddlerFirebug으로 사용하여 서버에서 반환되는 JSON을 잡을 수 있습니다. 오류를 현지화하는 데 문제가 있으면 JSON 데이터에 질문을 추가해야합니다.

+0

도움을 주셔서 감사합니다. 그러나이 Jqgrid 검색은 작동하지 않습니다. 왜 내가 plese가 나를 돕는 지 알 수 없습니다. 감사합니다 – Pouya

+0

@ 모센 : 천만에! 기존 문제에 관해서는 문제를보다 정확하게 지정해야합니다. 'datatype : 'json''을 사용하면 * 서버 *가 데이터 필터링 (검색)을 담당합니다. 서버는'filters' 매개 변수를받습니다 (형식은 [here] (http://www.trirand.com/jqgridwiki/doku.php?id=wiki:advanced_searching#options)를 참조하십시오). 따라서 서버는'filters' 매개 변수를 분석하고 검색을 구현해야합니다. – Oleg

+0

: 죄송합니다. 서버 측 또는 ClientSide에서 검색 하시겠습니까 ?? 나는 나의 모든 체코 슬로바키아 인을 얻었고, 누구나는 옳았다. 나는 어떻게 풀어야할지 모른다. – Pouya