如何在 <td>blah</td> 上嵌入链接并在 CodeIgniter 中单击时调用函数

Posted

技术标签:

【中文标题】如何在 <td>blah</td> 上嵌入链接并在 CodeIgniter 中单击时调用函数【英文标题】:How to embed links on <td>blah</td> and call function on click in CodeIgniter 【发布时间】:2013-03-04 03:02:14 【问题描述】:

我正在使用 codeIgnitor 的类从数据库表(即类别)创建 html 表。

这是我的控制器:

Testpagi.php

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Testpagi extends CI_Controller

function __construct()
    parent::__construct();

public function index($offset = 0)

  $search_query = $this->db->get('Categories');
  $count_records = $search_query->num_rows();

    // Load the tables library
    $this->load->library('table');

    // Load Pagination
    $this->load->library('pagination');

    // Config setup
    $config['base_url'] = base_url().'/testpagi/index/';
    $config['total_rows'] = $count_records;
    $config['per_page'] = 10;
    // I added this extra one to control the number of links to show up at each page.
    $config['num_links'] = 5;
    // Initialize
    $this->pagination->initialize($config);

    // Query the database and get results
     $data['categories'] = $this->db->get('Categories', 10, $offset);

    // Create custom headers
    $header = array('S. No', 'Category Name', 'Status', 'Date Added', 'Last Modified');
    // Set the headings
    $this->table->set_heading($header);
    // Load the view and send the results


    $tmpl = array (
                'table_open'=> '<table  bgcolor="#F7F7F7" align="center" border="2" cellpadding="4" cellspacing="0">',

                'heading_row_start'   => '<tr>',
                'heading_row_end'     => '</tr>',
                'heading_cell_start'  => '<th bgcolor="#0B548C" style="color:#FFFFFF">',
                'heading_cell_end'    => '</th>',

                'row_start'           => '<tr>',
                'row_end'             => '</tr>',
                'cell_start'          => '<td bgcolor="#D4620E"  >',
                'cell_end'            => '</td>',

                'row_alt_start'       => '<tr>',
                'row_alt_end'         => '</tr>',
                'cell_alt_start'      => '<td bgcolor="#B2D593">',
                'cell_alt_end'        => '</td>',

                'table_close'         => '</table>'
          );

        $this->table->set_template($tmpl);      

    $data['message'] = 'Not Exist';
    $this->load->view('books_view', $data);


?>

这是我的观点:

books_view.php

<html>
<body>
    <div id='results' align="center">
    <?
            echo $this->table->generate($categories); 
            echo $this->pagination->create_links();

    ?>    

    </div>
</body>
</html>

注意我正在使用$this-&gt;table-&gt;set_template($tmpl); 来设置我的表格样式。

    我很困惑应该把&lt;a href=" '#' onclick=" 放在哪里。 " "&gt; 应该是什么来使 &lt;td&gt; 可点击。我搜索了很多,但找不到解决方案。 如何在&lt;td&gt;blah&lt;/td&gt;上嵌入链接并在CodeIgniter中点击调用函数?

图片如下:

我想在突出显示的类别上添加链接 Yellow

【问题讨论】:

使用javascript/Jquery对你来说重要吗?? 不,没关系。只是代码应该适合我的代码架构。 :) 【参考方案1】:

我建议你使用 html 而不是 javascript

您只需对控制器稍作调整并查看代码即可完成此操作:

    public function index($offset = 0)

      $search_query = $this->db->get('Categories');
      $count_records = $search_query->num_rows();

        // Load the tables library
        $this->load->library('table');

        // Load Pagination
        $this->load->library('pagination');

        // Config setup
        $config['base_url'] = base_url().'/testpagi/index/';
        $config['total_rows'] = $count_records;
        $config['per_page'] = 10;
        // I added this extra one to control the number of links to show up at each page.
        $config['num_links'] = 5;
        // Initialize
        $this->pagination->initialize($config);

        // Query the database and get results
        //CHANGE THIS
         $categories = $this->db->get('Categories', 10, $offset)->result_array();

        // Create custom headers
        $header = array('S. No', 'Category Name', 'Status', 'Date Added', 'Last Modified');
        // Set the headings
        $this->table->set_heading($header);
        // Load the view and send the results


        $tmpl = array (
                    'table_open'=> '<table  bgcolor="#F7F7F7" align="center" border="2" cellpadding="4" cellspacing="0">',

                    'heading_row_start'   => '<tr>',
                    'heading_row_end'     => '</tr>',
                    'heading_cell_start'  => '<th bgcolor="#0B548C" style="color:#FFFFFF">',
                    'heading_cell_end'    => '</th>',

                    'row_start'           => '<tr>',
                    'row_end'             => '</tr>',
                    'cell_start'          => '<td bgcolor="#D4620E"  >',
                    'cell_end'            => '</td>',

                    'row_alt_start'       => '<tr>',
                    'row_alt_end'         => '</tr>',
                    'cell_alt_start'      => '<td bgcolor="#B2D593">',
                    'cell_alt_end'        => '</td>',

                    'table_close'         => '</table>'
              );

            $this->table->set_template($tmpl);
        //AND ADD THIS CODE      
        foreach($categories as $category)
           $this->table->row(array($category['id'], '<a href="'.site_url('contoller/method/'.$category['id']).'">'.$category['category_name'].'</a>', $category['status'], $category['date_added'], $category['last_modified']));
//remember to change the keys of $category (id,category_name,status,date_added,last_modified) for the ones that you have in your database
        
        $data['message'] = 'Not Exist';
        $this->load->view('books_view', $data);
    

现在在您看来,只需从生成函数中删除 $categories:

<html>
<body>
    <div id='results' align="center">
    <?
            echo $this->table->generate(); 
            echo $this->pagination->create_links();

    ?>    

    </div>
</body>
</html>

【讨论】:

【参考方案2】:

只是一个想法,使用 Jquery,首先将 class 或 id 添加到 $tmpl 数组上的 &lt;td&gt;,然后使用:

<script type="text/javascript">
   $(document)ready(function()
     $('your-class').click(function()
        window.location.replace('your link');
     );
   );
</script>

祝你好运!

【讨论】:

以上是关于如何在 <td>blah</td> 上嵌入链接并在 CodeIgniter 中单击时调用函数的主要内容,如果未能解决你的问题,请参考以下文章

如何在 TD 中对齐表格?

如何在表格中选择包括 colspans 的列?

我们如何在 selenium c# 中从表 td 访问超链接

帝国CMS7.0的多值字段如何循环调用?

Yii2:如何在一个TR内添加多个TD行?

如何迭代在 td 内具有输入标签的表