2011-03-27 81 views
1

我使用CI生成使用表點擊行進行編輯/刪除?

$query = $this->expenses_model->expenses_table(); 

//gary's code went here 

$this->load->library('table'); 
$tmpl = array ('table_open' => '<table class="table">'); 
$this->table->set_template($tmpl); 

// gary added 'Edit' at end of array 

$this->table->set_heading('Date', 'Plant', 'Expense', 'Category', 'Notes'); 

//when using gary's code, changed $query below to $data 

$table['tab'] = $this->table->generate($query);  
$this->load->view('vw/exp/expenses_vw', $table, TRUE); 

它通過jQuery的數據表上運行客戶端

$(document).ready(function() { 
    /* Init DataTables */ 
    var oTable = $('.table').dataTable({ 
       "bJQueryUI": true, 
       "sScrollX": "", 
       "bSortClasses": false, 
       "aaSorting": [[0,'desc']], 
       "bAutoWidth": true, 
       "bInfo": true, 
       "sScrollY": "100%", 
       "sScrollX": "100%", 
       "bScrollCollapse": true, 
       "sPaginationType": "full_numbers", 
       "bRetrieve": true 
       });  
    }); 

問題#1 對數據庫的每條記錄都有一個唯一的自動增量ID record_id那需要傳遞給每一行。但是這個record_id列無法顯示在前端(即需要隱藏)。我們如何通過CI來做到這一點?

問題2 我應該使用什麼樣的JS,以允許用戶點擊行,彈出與編輯表單/刪除?

感謝您的幫助!

PS - 這裏是生成表數據模型

function expenses_table() 
{ 
    $id = $this->tank_auth->get_user_id(); 

    $this->db->select('record_id, date_format(date, \'%c/%d/%Y\'), plant_name, concat(\'$ \', format(value_1, 2)), value_2, value_3', FALSE); 
    $this->db->from('data'); 
    $this->db->join('plants', 'plants.plant_id = data.plant_id_fk'); 
    $this->db->where('category_1', 'expenses'); 
    $this->db->where('data.id_fk', $id); 
    $this->db->order_by("date", "desc"); 
    $query = $this->db->get(); 

    return $query; 
} 

回答

2

1.添加新列Edit

$this->table->set_heading('Date', 'Plant', 'Expense', 'Category', 'Notes', 'Edit'); 

2.構建編輯鏈接基礎上,RECORD_ID每個record and hide record_id

$data = array(); 

while ($row = $query->result_array()) 
{ 
    $anchor = '<a href="#" class="edit_record" record_id="' . $row['record_id'] . '">Edit</a>'; 

    // Hide the record_id in the table output 
    unset($row['record_id']); 

    // Let's add the link so we can edit this entry 
    $row[] = $anchor; 

    // Lets push the new row so it can be output 
    $data[] = $row; 

} 

$table['tab'] = $this->table->generate($data); 

3.使用jQuery與行互動:

$('a.edit_record').click(function() { 
var record_id = this.attr('record_id'); 

// Lets generate the magical lightbox here... 

}); 

有許多可用於許多的jQuery插件燈箱,可以接受HTML。所有你需要做的就是創建一個ajax控制器來處理請求,使用模型來編輯/刪除並以JSON返回結果。

jquery lightbox html (Google)

+0

@gary綠色 - 感謝您的答覆 - 請我的更新上面,我說我用它來生成表數據模型 - 我不使用循環或'while' - 任何想法如何'在我的情況下unset''record_id'? – pepe 2011-03-27 14:17:52

+0

@gary green - 另一個問題是,'unset'會刪除列,它不會允許我使用'record_id'來使每行都是唯一的。 – pepe 2011-03-27 14:21:17

+0

你真正需要什麼?現在你談論的是讓每一行都是獨一無二的?...... – 2011-03-27 14:29:25

相關問題