2015-10-22 6 views
2

Я использую jQuery DataTables и Coldfusion вместе с SQL для базы данных. Я пытаюсь выяснить способ показать свое поле статуса PROCESSING, если нет даты для Date_Complete и COMPLETED, если есть дата в Date_Complete. Я делаю это на стороне HTML CF с заявлением IF.jQuery Datatables/CF variable issue

Но так как это сообщение COMPLETED или PROCESSING в этой колонке, когда я пытаюсь позвонить в JS на дату, когда она не указала дату, но предоставив эту терминологию сейчас.

На картинке ниже вы увидите Date Complete: COMPLETED, где он должен теперь показывать дату.

Любая помощь с этим была бы весьма признательна.

enter image description here

Таблица базы данных enter image description here

HTML

<table id="processing" class="table table-hover"> 
    <thead> 
     <th></th> 
     <th><b>ITEM ID</b></th> 
     <th style="display:none;"><b>DEALER ID</b></th> 
     <th style="display:none;"><b>DATE RECEIVED</b></th> 
     <th style="display:none;"><b>OP ID</b></th> 
     <th><b>DUE DATE</b></th> 
     <th><b>STATUS</b></th> 
     <th style="display:none;"><b>LATE</b></th> 
     <th style="display:none;"><b>CLOSED BY</b></th> 
     <th style="display:none;"><b>RMKS</b></th> 
     <th style="display:none;"><b>PROCESSING LOCATION</b></th> 
     <th><b>QTY</b></th> 

    </thead> 
    <tbody> 
    <cfoutput query="processTable">      
    <tr> 
     <td class="details-control"></td> 
     <td class="LAlign">#id#</td> 
     <td style="display:none;">#processTable.name#</td> 
     <td style="display:none;">#dateFormat(processTable.Date_Received, 'mm/dd/yyyy')#</td> 
     <td style="display:none;">#op_id#</td> 
     <td>#dateFormat(processTable.Date_Due, 'mm/dd/yyyy')#</td> 
     <cfif #Date_Complete# EQ ""> 
     <td>PROCESSING</td> 
     <cfelse> 
     <td>COMPLETED</td> 
     </cfif> 
     <td style="display:none;">#Completed_Late#</td> 
     <td style="display:none;">#Closed_by#</td> 
     <td style="display:none;">#Rmks#</td> 
     <td style="display:none;">#Processing_Location#</td> 
     <td class="CAlign">#Item_Count#</td> 
    </tr>       
    </cfoutput> 
    </tbody> 
</table> 

JS

function format (d) { 

    return 'Item ID: '+d.id+'<br>'+ 
      'Dealer: '+d.dealerID+'<br>'+ 
      'Date Received: '+d.Date_Received+'<br>'+ 
      'Checked In: '+d.op_id+'<br>'+ 
      'Date Due: '+d.Date_Due+'<br>'+ 
      'Date Complete: '+d.Date_Complete+'<br>'+ 
      'Completed Late: '+d.Completed_Late+'<br>'+ 
      'Completed By: '+d.Closed_by+'<br>'+ 
      'Remarks: '+d.Rmks+'<br>'+ 
      'Location: '+d.Processing_Location+'<br>'+ 
      'Item Count: '+d.Item_Count+'<br>'; 
    } 
// Setup the page once it has loaded. 
$(document).ready(function() { 

    var oTable = $('#processing').DataTable({ 
     "columns": [ 
      { 
       "class":   "details-control", 
       "orderable":  false, 
       "data":   null, 
       "defaultContent": "" 
      }, 
      { "data": "id" }, 
      { "data": "dealerID" }, 
      { "data": "Date_Received" }, 
      { "data": "op_id" }, 
      { "data": "Date_Due" }, 
      { "data": "Date_Complete" }, 
      { "data": "Completed_Late" }, 
      { "data": "Closed_by" }, 
      { "data": "Rmks" }, 
      { "data": "Processing_Location" }, 
      { "data": "Item_Count" } 
     ], 
     "order": [[1, 'asc']], 
     "columnDefs": [ 
      { "targets": [0,2,3,4,5,6,7,8,9,10,11], "searchable": false } 
     ], 
     "sDom": '<"row view-filter"<"col-sm-12"<"pull-left"l><"pull-right"f><"clearfix">>>t<"row view-pager"<"col-sm-12"<"text-center"ip>>>', 
     select: { 
      style: 'single' 
     }, 
     scrollY:  250, 
     deferRender: true, 
     scroller:  true, 
     /*"aLengthMenu": [[25, 50, 75, -1], [25, 50, 75, "All"]], 
     "iDisplayLength": 25,*/ 
     "oLanguage": { 
      "sLengthMenu": "_MENU_ <label for='processing_length'><strong>records per page</strong></label>", 
      "oPaginate": { 
       "sPrevious": "«", 
       "sNext": "»", 
      } 
     } 
    }); 

CFC

<cffunction name="displayTable" access="public" returntype="query"> 
    <cfset var processTable = ''> 
    <cfquery name="processTable"> 
     SELECT * 
     FROM dbo.Dealer_Track_Work, dbo.Dealer_Track_Dealers 
     WHERE dbo.Dealer_Track_Work.dealerID = dbo.Dealer_Track_Dealers.id  
    </cfquery> 
    <cfreturn processTable> 
</cffunction> 

ответ

2
  • Заменить этот HTML код:

    <cfif #Date_Complete# EQ ""> 
    <td>PROCESSING</td> 
    <cfelse> 
    <td>COMPLETED</td> 
    </cfif> 
    

    с

    <td>#DateFormat(Date_Complete,"mm/dd/yyyy")#</td> 
    
  • Заменить этот код JavaScript

    { "data": "Date_Complete" }, 
    

    с

    { 
        "data": "Date_Complete", 
        "render": function(data, type, full, meta){ 
         return ((data) ? "COMPLETED" : "PROCESSING"); 
        } 
    }, 
    
+0

@Vicki, метод «render» позволяет отображать различный контент для ячейки, но сохранить исходные данные, чтобы вы могли получить доступ к нему в другом месте (как в функции 'format()'). –

+0

@Vicki, change ''Примечания:' + d.Rmks + '
'' to ''Примечания:' + ((d.Rmks)? D.Rmks: 'N/A') + '
'' –

2

Слишком долго для комментария

Может быть, я не ниже тебя ?? Похоже, что текст «COMPLETED» поступает из вашего выходного кода HTML. В частности, здесь:

<cfoutput query="processTable">      
<tr> 
    <td class="details-control"></td> 
    <td class="LAlign">#id#</td> 
    <td style="display:none;">#processTable.name#</td> 
    <td style="display:none;">#dateFormat(processTable.Date_Received, 'mm/dd/yyyy')#</td> 
    <td style="display:none;">#op_id#</td> 
    <td>#dateFormat(processTable.Date_Due, 'mm/dd/yyyy')#</td> 
    <cfif #Date_Complete# EQ ""> 
    <td>PROCESSING</td> 
    <cfelse> 
    <td>COMPLETED</td> 
    </cfif> 
    <td style="display:none;">#Completed_Late#</td> 
    <td style="display:none;">#Closed_by#</td> 
    <td style="display:none;">#Rmks#</td> 
    <td style="display:none;">#Processing_Location#</td> 
    <td class="CAlign">#Item_Count#</td> 
</tr>       
</cfoutput> 

Таким образом, вы должны иметь возможность изменить логику, чтобы отобразить фактическую дату. (Обратите внимание, что вам не нужны хеш-теги в инструкции cfif).

 <cfif Date_Complete EQ ""> 
     <td>PROCESSING</td> 
    <cfelse> 
     <td>#DateFormat(Date_Complete,"mm/dd/yyyy")#</td> 
    </cfif> 

Или что-то в этом роде в зависимости от форматирования.