當DataTable資料接回來時候 需做的動作

//初始化的前20筆   
function GetOrderTtrNoCount20()
{

  var data =
  {    
    "CusNo":Account
  };
  var sendData =
  {
    "value":JSON.stringify(data)
  }
  $.ajax(
    {
      url: "Your URL",
      type: "post",
      data:sendData,
      datatype: 'jsonp',
      success: function(data)
      {
         //如果資料回傳為 NoData 我則不做動作(NoData是我預設無值時後回傳)
        if(jQuery.parseJSON(data) != "NoData")
        {
          //宣告要接收資料的陣列
          arcTtrNo = new Array();
          //將資料轉換出來存放至陣列
          arcTtrNo =   jQuery.parseJSON(data);
          //先判斷是否DataTable已經使用 如有責清除
          if ( $.fn.dataTable.isDataTable( '#mytable' ) )
          {
            $('#mytable').DataTable().destroy();
          }
          //要繪製成TABLE用來存放的變數
          var DtTree ="";
          for(var i = 0 ; i < arcTtrNo.length ; i++)
          {
            //繪製TABLE
            var strTemp = '';
                strTemp+='<tr><td>'+arcTtrNo[i]["PickupDat"]+'</td>';
                strTemp+='<td>'+arcTtrNo[i]["RelTtrSno"]+'</td>';   
                strTemp+='<td>'+arcTtrNo[i]["Nti"]+'</td>';  
                strTemp+='<td>'+arcTtrNo[i]["AgSqr"]+'</td>';
                strTemp+='<td>'+arcTtrNo[i]["AgSqrAdr"]+'</td>';
                strTemp+='<td>'+arcTtrNo[i]["Money"]+'</td>';
  
                //在Checkbox 宣告時候 ,加入onChange並加入當下陣列索引參數.
                strTemp+= '<td><input type="checkbox" name="id[]" value="'+ i+ '" onchange="fun_chk_change('+i+')" ></td>';                 
                strTemp+='</td></tr>';
            DtTree+=strTemp;

            //帶入預設值 false 未選取  主要是用來記錄使用者是否選取過
            arcTtrNo[i]["SelectCheck"] = false;
          }
          $('#MyContent1').html(DtTree);
          //套上DataTable 並預設排序
          $('#mytable').DataTable(
            {
              "order": [0,'desc']
            });
        }
        else
        {
          //如果沒資料
          $('#MyContent1').html("");
          alert('查无资料');
        }
       
      },
      error:function()
      {
        alert("<?=$this->lang->line('OSNetIsConnErr')?>");
      });

}

 

使用者選取分頁變動時候

//分頁畫面變動時候 把值 set 回去
  $('#mytable').on( 'draw.dt', function () 
  {
    //取出DataTable裡面 元素是 checkbox的
    var Data = $('#MyContent1  input:checkbox').each(function ()
      {			
        //取得目前索引位置  跟原始陣列判斷是否重複
        var vValue = $(this).val().toString();				
      
        //原始陣列索引比對 看是否勾選過 如有就打勾(選取)
        for(var i = 0 ; i < arcTtrNo.length ; i++)
        {
          //如果兩個索引相同
          if(i.toString() ==vValue)
          {
             //因為有選取過,所以要將此chekbox 的 checked  = true;
            $(this).context.checked = arcTtrNo[i]["SelectCheck"];
            //因為只會比對到一次 即可退出 增加速度
            break;
          }
        }		
      });
  } );

取得使用者有選取的Checkbox.

//取得變更值
function fun_chk_change(IndexNum)
{
   //跑原始陣列
  for(var i = 0; i < arcTtrNo.length; i++)
  {
    //如果跟使用者選取相同
    if(i == IndexNum)
    {
      
      var onOff = arcTtrNo[i]["SelectCheck"].toString();
      //判斷當下是什麼 將值修改
      if(onOff == "true")
      {
        arcTtrNo[i]["SelectCheck"] = false;
      }
      else
      {
        arcTtrNo[i]["SelectCheck"] = true;
      }
    }
  }
}

取出所有選取的checkbox的相關值

function SelectAll()
  {
    //宣告要存放的陣列
    arcAll=new Array();  
    var d=0;
    //原始陣列
    for (var i=0; i <arcTtrNo.length; i++) 
    {
       //如果此物件欄位為 true 則執行紀錄
      if(arcTtrNo[i]["SelectCheck"])
      { 
        //除此方式可使用 push 直接將所需值丟入.      
        arcAll[d]=arcTtrNo[i]["RelTtrSno"];

        d++;
      }
    }
}

 

Leave a Comment