【问题标题】:Codeigniter: Changing Datatables based on Select ID valuesCodeigniter:根据选择 ID 值更改数据表
【发布时间】:2017-09-20 06:14:19
【问题描述】:

您好,我在数据表方面需要帮助。我的问题是我希望我的数据表仅显示基于在选择下拉列表中具有 schoolyear_id 值的学年的数据,如您将在此处看到的那样。

Schoolyear Dropdown Image

到目前为止,这是我在下拉列表中的变量。

 <select class="form-control" style="width:115px" name="schoolyearData" id="schoolyearData">
   <?php foreach ($schoolyearData as $schoolyear)
   {
   ?>
      <option value="<?php echo $schoolyear['schoolyear_id']; ?>"> <?php echo $schoolyear['schoolyear_date']; ?> </option>

   <?php 
   } 
   ?>
 </select>

现在这是我用于数据表和 ajax 的自定义 js。

var manageRegistrationTable;

$(document).ready(function() {

    manageRegistrationTable = $("#manageRegistrationTable").DataTable({
        'ajax' : 'registration/fetchRegistrationData',
        'order' : []

    });
});

这是我的控制器函数,将由 ajax 访问。

public function fetchRegistrationData($registrationId = null)
{
if($registrationId) {
  $registrationData = $this->model_registration->fetchRegistrationData($registrationId);
  echo json_encode($registrationData); // USED FOR EDITING
}
else {
  $registrationData = $this->model_registration->fetchRegistrationData();
  $result = array('data' => array());

  $x = 1;
  foreach ($registrationData as $key => $value) {

    $button = '<!-- Single button -->
    <div class="btn-group">
      <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
        Action <span class="caret"></span>
      </button>
      <ul class="dropdown-menu">
        <li><a type="button" class="btn btn-default" style="text-align:left;" data-toggle="modal" data-target="#viewRegistraionModal" onclick="viewRegistration('.$value['registration_id'].')"> <i class="glyphicon glyphicon-user"></i> View</a></li>
        <li><a type="button" class="btn btn-default" style="text-align:left;" data-toggle="modal" data-target="#updateRegistrationModal" onclick="editRegistration('.$value['registration_id'].')"> <i class="glyphicon glyphicon-edit"></i> Edit</a></li>
        <li><a type="button" class="btn btn-default" style="text-align:left;" data-toggle="modal" data-target="#removeRegistrationModal" onclick="removeRegistration('.$value['registration_id'].')"> <i class="glyphicon glyphicon-trash"></i> Remove</a></li>       
      </ul>
    </div>';

    $photo = '  <img src="../'.$value['student_image'].'" alt="Photo" class="img-circle candidate-photo" width="95"  height="95"/>';

    $result['data'][$key] = array(
      $x,
      $photo,
      $value['student_lastname'],
      $value['student_firstname'],
      $value['student_middlename'],
      $value['schoolyear_date'],
      $value['gradelevel_name'],
      $value['section_name'],
      $value['registration_dateadded'],
      $button
    );
    $x++;
  } // /froeach

  echo json_encode($result);
} // /else    
}

现在是模型。

public function fetchRegistrationData($registrationId = null)
{
if($registrationId) {
  $sql = "SELECT * FROM tbl_registration 
  INNER JOIN tbl_student ON tbl_student.student_id = tbl_registration.student_id 
  INNER JOIN tbl_schoolyear ON tbl_schoolyear.schoolyear_id = tbl_registration.schoolyear_id 
  INNER JOIN tbl_gradelevel ON tbl_gradelevel.gradelevel_id = tbl_registration.gradelevel_id 
  INNER JOIN tbl_section ON tbl_section.section_id = tbl_registration.section_id WHERE registration_id = ?";
  $query = $this->db->query($sql, array($registrationId));
  return $query->row_array();

  // USED FOR EDIT
} 
else {
  $sql = "SELECT * FROM tbl_registration 
  INNER JOIN tbl_student ON tbl_student.student_id = tbl_registration.student_id 
  INNER JOIN tbl_schoolyear ON tbl_schoolyear.schoolyear_id = tbl_registration.schoolyear_id 
  INNER JOIN tbl_gradelevel ON tbl_gradelevel.gradelevel_id = tbl_registration.gradelevel_id 
  INNER JOIN tbl_section ON tbl_section.section_id = tbl_registration.section_id ORDER BY schoolyear_date DESC";
  $query = $this->db->query($sql);
  return $query->result_array();
}
}

我在想这需要一个 onchange 函数还是什么? 以及如何将 schoolyear_id 的值传递给数据表 ajax。

【问题讨论】:

    标签: javascript ajax codeigniter datatable


    【解决方案1】:

    对不起,我必须回答,因为我没有足够的声誉来添加评论。一般情况下,datatable js 会有一个名为 ajaxOptions 的选项来传递参数给它。

    您也可以到这个问题here 来解决类似的情况。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-04
      • 1970-01-01
      • 1970-01-01
      • 2015-08-01
      • 1970-01-01
      • 2020-10-19
      • 2014-05-03
      • 2020-08-22
      相关资源
      最近更新 更多