2009-09-28 7 views
4

http://www.chartle.net/과 비슷한 데이터 테이블을 만들어야합니다.jqGrid with dynamic colModel?

가장 importang 기능은 다음과 같습니다

  1. 행/동적
  2. 열을 추가 할 수 있습니다 (완료) 삭제를 추가 할 수 있습니다/동적으로 제거
  3. 변경된 colModel (나는이 작업을 수행 할 수 있습니까?) 기능 수정을 위해 데이터베이스에 저장할 수 있습니다 ..

이게 가능합니까?

+0

나는 내가 다음 주에이 문제를 해결하려고합니다 먼저 내 대시 보드에 위도/경도지도 구성 요소를 만드는 방법에 대한 이동하기로 결정했다. 답변 주셔서 감사합니다! –

답변

2

문제는 동적으로 jQgrid ColModel을 변경할 수 없다는 것입니다. 내가 볼 수있는 두 가지 옵션은 다음과 같습니다

  1. 이 GridUnload를 사용하여 전체 격자를 삭제하고 (이 완전히 변경할 수있는 경우) 새로운 ColModel로 다시로드 :

    jQuery를 (선택) .GridUnload (선택);

  2. 가능한 모든 행을로드하고 필요한 것을 표시하거나 숨 깁니다 (예 : 동적으로 저장하기위한 show hide columns plugin

을 사용하여 그 같은 JSON 데이터베이스 그리드의 구성 데이터를 저장하기에 충분해야한다.

1

있는 jqGrid 3.6 동적으로 열을 표시/숨기기를 지원하는 데 도움이 희망과 3.6 데모 페이지에 "열 선택자"데모가 :

이 링크는 당신이 더 얻을 수 있습니다. 이게 당신의 필요에 충분한가? 자신의 문서에서

0
bindJqGrid("SetPayInvoice", feeID, datasetID, 1); 

function bindJqGrid(actionController, feeID, datasetID, step) 
{ 
    agreementID = $("#agreementID").val(); 

    mappingTemplateID = $("#mappingTemplateID").val(); 
    invoiceID = $("#invoiceID").val(); 
    var action = '/PayInvoice/' + actionController + '?agreementID=' + agreementID + '&mappingTemplateID=' + mappingTemplateID + '&invoiceID=' + invoiceID + '&feeID=' + feeID + '&datasetID=' + datasetID; 
    var caption = "Invoice Exception"; 
    $("#headerText").html(caption); 
    JQGrid(caption, action); 
} 
function JQGrid(caption, action) 
{ $("#tblGrid").jqGrid('GridUnload'); 

    $.ajax({ 
     url: action, 
     dataType: "json", 
     mtype: 'POST', 
     success: function (result) { 
      if (result) { 
       if (!result.Error && result != "" && result != undefined) { 
        $("#TotalData").html(result.records); 
        $("#divWorkflowWrapper").show(); 
        $("#dvFooter").show(); 

        var colData = ""; 
        colData = columnsData(result.column); 
        colData = eval('{' + colData + '}'); 

        $("#tblGrid").jqGrid({ 
         url: action, 
         datatype: 'json', 
         mtype: 'GET', 
         colNames: result.column, 
         colModel: colData, 
         autowidth: true, 
         height: 550, 
         rowNum: 25, 
         rowList: [25, 50, 75, 100], 
         loadtext: "Loading...", 
         pager: '#tblGridpager', 
         viewrecords: true, 
         gridview: true, 
         altRows: true, 
         cellEdit: true, 
         cellsubmit: "remote", 
         cellurl: '/PayInvoice/GridSavecell', 
         beforeSelectRow: function (rowid) { return false; }, 
         ondblClickRow: function (rowid, iRow, iCol) { 
          jQuery("#tblGrid").editCell(iRow, iCol, true); 
         }, 
         afterEditCell: function() { 
          e = jQuery.Event("keydown"); 
          e.keyCode = $.ui.keyCode.ENTER; 
          edit = $(".edit-cell > *"); 
          edit.blur(function() { 
           edit.trigger(e); 
          }); 
         }, 
         beforeSubmitCell: function (id, cellname, value, iRow, iCol) { 
          objedit(id, cellname, value); 
          return { id: id, cellname: cellname, value: value, iRow: iRow, iCol: iCol }; 
         }, 
         afterSaveCell: function (id, cellname, value, iRow, iCol) { 
          objedit(id, cellname, value); 
          return { id: id, cellname: cellname, value: value, iRow: iRow, iCol: iCol }; 
         }, 
         caption: caption 
        }); 
       } 
      } 
      else { 
       $("#divWorkflowWrapper").hide(); 
       $("#dvFooter").hide(); 
      } 
     }, 
     error: function (xhr, ajaxOptions, thrownError) { 
      if (xhr && thrownError) { 
       alert('Status: ' + xhr.status + ' Error: ' + thrownError); 
      } 
     } 
    }); 
} 
+0

게시 한 코드를 설명하는 것이 더 낫습니다. –

1
function objedit(id, cellname, value) 
{ 

    var flag = 0; 
    for (var i = 0; i < index; i++) { 
     if (obj[i][0] == id && obj[i][1] == cellname) { 
      obj[i] = [id, cellname, value] 
      flag++; 
     } 
    } 
    if (flag == 0) { 
     obj[index] = [id, cellname, value]; 
     index++; 
    } 
} 


function columnsData(Data) 
{ 

var formater = ""; 

    var str = "["; 
    for (var i = 0; i < Data.length; i++) { 
     if (Data[i] == "Id") 
      str = str + "{name:'" + Data[i] + "', index:'" + Data[i] + "', hidden: true,}"; 
     else 
      str = str + "{name:'" + Data[i] + "', index:'" + Data[i] + "', editable: true}"; 
     if (i != Data.length - 1) { 
      str = str + ","; 
     } 
    } 
    str = str + "]"; 
    return str; 
} 
//------end grid part----------