【问题标题】:Jquery easyui datagrid load data from codeigniter controllerJquery easyui datagrid从codeigniter控制器加载数据
【发布时间】:2021-08-02 19:54:13
【问题描述】:

我正在使用 Jquery easyui 表的 Codeigniter Web 应用程序,在表中我创建了一个选择下拉列表,它被附加到表行中

我可以通过 ajax post 将数据库中的下拉值保存到控制器,但我不知道如何根据id 选择存储在数据库中的下拉值?

HTML 和 Jquery

 <table
            id="tt"
            class="easyui-datagrid"
            url="<?php echo base_url()."contacts/contacts_list_data"; ?>"

            pagination="true"
            rownumbers="true"
            toolbar="#tb"
            pageSize="10"
            pageList="[5,10,20,50,100]"
            fit= "true"
            fitColumns= "true"
            nowrap= "true"
            view= "detailview"
            idField="id"
            >
              <thead>
                  <tr>
                   <th field="id"  checkbox="true"></th>

                   <th field="email"  sortable="true">
                    <?php echo $this->lang->line('Email'); ?></th>

                      <th field="status_type"  formatter='status_column'>
                      <?php echo $this->lang->line('Status'); ?></th>

                  </tr>
              </thead>

            </table>

<script>
    function status_column(value,row,index)
    {
        var inputVal = document.getElementById("status_column").innerHTML;
        return inputVal;



    }
</script>

<script>
    function getSelectedValue(dg, field){
        var dg = $('#tt');
        var row = dg.datagrid('getSelected');
        if (!row){return undefined;}
        var fields = dg.datagrid('getColumnFields',true).concat(dg.datagrid('getColumnFields',false));
        if (typeof field == 'number'){
            return row[fields[field]];
        } else {
            return row[field];
        }
    }

</script>

<div id="status_column" style="display:none">
    <select name="stat_column" id="stat_column"  class="form_control stat_column">
        <option value="0">Select Status</option>
        <option value='All'>All</option>
        <option value='Open'>Open</option>
        <option value='Closed'>Closed</option>
        <option value='Won'>Won</option>
        <option value='Lost Price is High'>Lost Price is High</option>
        <option value='Lost Not Enough Features'>Lost Not Enough Features</option>
        <option value='Lost Other'>Lost Other</option>
        <option value='Never Replied Back'>Never Replied Back</option>
        <option value='Bad Email'>Bad Email</option>
        <option value='Bad Number'>Bad Number</option>
        <option value='Do Not Disturb'>Do Not Disturb</option>
    </select>
</div>

<script>

    $('body').on('change', '.stat_column', function() {

        var stat_column = $(this).find("option:selected").val();
        var user_email = getSelectedValue('#tt', 2);


        $.ajax({
            url: base_url+'contacts/stat_column',
            type: 'POST',
            dataType: "json",
            data: {
                stat_column: stat_column,
                user_email:user_email,
            },
            success: function(data) {
                if (data.statcolumn) {
                    $('#tt').datagrid('reload');
                    $(".reg-alert-success").css('display', 'block');
                    $(".reg-alert-success").html(data.statcolumn);



                }

            }
        });

    });

</script>

从数据库控制器函数中获取值

  public function contacts_list_data()
    {


    $user_type = $this->session->userdata('user_type');
    $user_id = $this->session->userdata('user_id');

    $where_simple['user_id'] = $user_id;
    $where  = array('where'=>$where_simple);

    $offset = ($page-1)*$rows;
    $result = array();

    $table = "contact";

    $info = $this->basic->get_data($table, $where, $select='', $join='', $limit=$rows, $start=$offset, $order_by=$order_by_str);

     // echo $this->db->last_query();
    if ($search_contact_type_id)
    {
        // $where_simple['contact_type_id like ']    = "%".$search_contact_type_id."%";
        $this->db->where("FIND_IN_SET('$search_contact_type_id',contact.contact_type_id) !=", 0);
    }
    $total_rows_array = $this->basic->count_row($table, $where, $count="id");
    // echo $this->db->last_query();
    $total_result = $total_rows_array[0]['total_rows'];

    $info_count = count($info);


    foreach ($info as $key => $value)
    {
      $value = $info[$key]['contact_type_id'];

      $type_id = explode(",",$value);

      $table = 'contact_type';
      $select = array('type');

      $where_group['where_in'] = array('id'=>$type_id);
      $where_group['where'] = array('deleted'=>'0');

      $info1 = $this->basic->get_data($table,$where_group,$select);

     $str = '';
     foreach ($info1 as  $value1)
      {
        $str.= $value1['type'].",";
      }


    $str = trim($str, ",");

    $info[$key]['contact_type_id']= $str;

    }
    echo convert_to_grid_data($info, $total_result);

}

在数据库控制器函数中存储下拉值

public function stat_column(){

    $stat_column= $this->input->post('stat_column');
    $user_email = $this->input->post('user_email');

    $data['status'] = $stat_column;

    $results = $this->basic->update_stat_column($user_email, $data);
   
    if ($results == TRUE) {
        echo json_encode('successfully ');
        //redirect('/thankyou/');
    }
}

【问题讨论】:

  • 谁能提供解决方案?

标签: jquery ajax codeigniter jquery-easyui


【解决方案1】:

这是基于您的结构的一种方法

$('body').on('change', '.stat_column', function() {
    var stat_column = $(this).find("option:selected").val();
    var user_id = $(this).closest('tr').find('td')[0].innerHTML

【讨论】:

  • 实际上我需要数据库中的值,这些值根据用户 ID 存储在数据库中??
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-07
相关资源
最近更新 更多