2017-02-04 100 views
2

在網格內部,在'批准/拒絕'列OnRowCommand中有一個ID爲'txtRemarksByEntity'的文本框,我需要檢索文本框的值。如何獲取文本輸入字段的值?

function BtnProcurementApprovalByEntityClick(rowId, value) { 
    var rowData = $('#GridProcureApprovalByEntity').getRowData(rowId); 
    ReqIdApproval = rowData['RequestId']; 
    ApprovalEntityId = rowData['approvalentityid']; 
    ApprovalTypeId = rowData['approvaltypeid']; 
    ApprovalStatusText = rowData['status_desc']; 
    var ab = rowData["Approve/Reject"]; 
    var $str1 = $(ab); 
    alert($str1.val()); 
} 

在rowData變量,我得到

Approval_Type:"Oprations" 
Approve/Reject:"Remarks  <input type="text" id="txtRemarksByEntity" class="txtRemarksByEntity" style="width: 250px">  <img src="images/yes1.PNG" style="cursor:pointer;" onclick="BtnProcurementApprovalByEntityClick(5 , 1)">  <img src="images/cross1.PNG" style="cursor:pointer;" onclick="BtnProcurementApprovalByEntityClick(5 , 2)">" 
RequestId:"51213" 
Request_Id:"PR51213" 
SrNo:"5" 
approvalentityid:"2234" 
approvaltypeid:"2" 
status_desc:"<span style="color:#EAA66A"><b>Pending</b></span>" 
statusid:"0" 
undefined:"<button type="button" class="button edit" onclick="editProcureApprovalByEntity(5)">Edit</button>" 

我動態結合電網如下

$("#GridProcureApprovalByEntity").jqGrid({ 
    autowidth: true, 
    height: 'auto', 
    shrinkToFit: true, 
    data: arr, 
    datatype: "local", 
    colNames: ['SrNo', 'PR No.', 'Approval Type', 'Approval Status', 'statusid', 'approvaltypeid', 'Approve/Reject', '', 'approvalentityid', 'RequestId'], 
    colModel: [{ 
     name: 'SrNo', 
     index: 'SrNo', 
     width: 30, 
     align: 'center' 
    }, { 
     name: 'Request_Id', 
     index: 'Request_Id', 
     width: 50, 
     align: 'center' 
    }, 
    { 
     name: 'Approval_Type', 
     index: 'Approval_Type', 
     width: 100, 
     align: 'center' 
    }, { 
     name: 'status_desc', 
     index: 'Approval Status', 
     width: 80, 
     align: 'center', 
     formatter: ApprovalFormatter 
    }, { 
     name: 'statusid', 
     index: 'statusid', 
     width: 0, 
     hidden: true 
    }, { 
     name: 'approvaltypeid', 
     index: 'approvaltypeid', 
     width: 0, 
     hidden: true 
    }, 
    //{ 
    //   align:'center', 
    //   formatter: function (cellvalue, options, rowobject) { 
    //    return '<button type="button" class="button edit" onClick="editProcureApproval(' + options.rowId + ')">Edit</button>'; 
    //   } 
    //  }, 

    { 
     name: 'Approve/Reject', 
     index: 'Approve/Reject', 
     formatter: formateeApprovalByEntity, width: 250, 
     align: 'center' 
     }, 
    { 
     formatter: formateApprovalByEntity, width: 50 
    }, 
    { 
     name: 'approvalentityid', 
     index: 'approvalentityid', 
     width: 0, 
     hidden: true 
    }, 
    { 
     name: 'RequestId', 
     index: 'RequestId', 
     width: 0, 
     hidden: true 
    } 

    ], 
    pager: "#PagingGridProcureApprovalByEntity", 
    rowNum: 10, 
    //rowList: [1, 2, 3], 
    //sortname: "Sno", 
    //sortorder: "desc", 
    viewrecords: true, 
    gridview: true, 
    autoencode: true, 
    hoverrows: false, 
    gridComplete: function() { 
     var recs = $("#GridProcureApprovalByEntity").getGridParam("reccount"); // parseInt($("#GridApproval").getGridParam("records")); 
     if (isNaN(recs) || recs == 0) { 
      $("#dvProcureAppGridByEntity").hide(); 
     } 
    }, 
    ondblClickRow: function (rowId) { 

    }, 
    loadComplete: function() { 
     $("tr.jqgrow:odd").css("background", "#EEF7FB"); 
    } 
    //,  caption: "Approval Details" 
}).jqGrid("navGrid", "#PagingGridProcureApprovalByEntity", { 
    search: false, 
    edit: false, 
    add: false, 
    del: false, 
    refreshstate: "current" 
}); 



function formateeApprovalByEntity(cellvalue, options, rowobject) { 
var str = ''; 
if (rowobject.statusid == "0") { 
    str = 'Remarks  <input type="text" id="txtRemarksByEntity" class="txtRemarksByEntity" style= "width: 250px"/>' + '  ' + 
     '<img src="images/yes1.PNG" style="cursor:pointer;" onClick="BtnProcurementApprovalByEntityClick(' + options.rowId + ' , ' + 1 + ')"/>' + '  ' + 
     '<img src="images/cross1.PNG" style="cursor:pointer;" onClick="BtnProcurementApprovalByEntityClick(' + options.rowId + ' , ' + 2 + ')"/>' 
} 
else { 
    str = ''; 
} 
return str; 
} 

$ str1.val()始終是 「」

回答

1

的jqGrid的代碼包含許多部分,這是不正確的,但問題的主要原因,你問是使用而不指定相應的unformatter。你應該定義unformat回調,其中得到來自單元格的數據。如果我沒有理解你的代碼,那麼你可以使用,例如,

unformat: function (cellvalue, options, cell) { 
    return $(cell).find(".txtRemarksByEntity").val(); 
} 

其他一些錯誤:

  • 一個永遠不應該使用相同的靜態值,以自定義格式的內部的任何元素分配id。它產生id複製品。例如,您應該從formateeApprovalByEntity格式化程序中刪除id="txtRemarksByEntity"
  • name每列colModel的值應該對應HTML中的id的要求。在name內使用特殊字符是不好的。例如,我建議將name: 'Approve/Reject'更改爲name: 'Approve_Reject'。以同樣的方式,列{ formatter: formateApprovalByEntity, width: 50 }是錯誤的。這是undefinedrowData的來源。您必須爲列指定一些非空的name值,例如name: "approval"
  • colModel中指定index屬性很不好,尤其是在您使用datatype: "local"時。通過複製name屬性的值自動生成默認值indexname: 'status_desc'列中的值index: 'Approval Status'可以防止按列進行排序和搜索。我建議你從colModel

刪除所有index特性最後我會問你指定的jqGrid的版本,您使用的(可以使用),並jqGrid的的叉(free jqGrid,商業Guriddo jqGrid JS或版本< = 4.7中的舊jqGrid),您使用的是,每個問題關於jqGrid。我開發免費的jqGrid分叉,我可以推薦你使用。您可以直接從CDN加載它(請參閱the wiki article)。

0

您需要委派和使用數據屬性

if (rowobject.statusid == "0") { 
    str = 'Remarks  <input type="text" id="txtRemarksByEntity" class="txtRemarksByEntity" style= "width: 250px"/>' + '  ' + 
     '<img class="imgRemarksByEntity" src="images/yes1.PNG" style="cursor:pointer;" data-rowID="[' + options.rowId + ' , ' + 1 + ']"/>' + '  ' + 
     '<img class="imgRemarksByEntity" src="images/cross1.PNG" style="cursor:pointer;" data-rowid="[' + options.rowId + ' , ' + 2 + ']"/>' 
} 

,並有

$("#someStaticParentOfImage").on"click",".imgRemarksByEntity",function() { 
    var rowId=$(this).data("rowid"); 
    BtnProcurementApprovalByEntityClick(rowId[0],rowId[1]); 
}); 

另外的ID必須是唯一的

+0

ID是唯一的,我得到的所有列值都與RowID相關,但txtRemarksByEntity值始終爲空。 – Soniya

相關問題