Bootstrap表格-行内动态按钮

4
我正在使用 bootstrap v3。我试图获得如图片所示的效果。我想要一个按钮,在 popup 中显示 "Item Name"。但是我的按钮没有显示。
问题在于我的表格的性质是动态的(来自 JSON 表单),这使得事情变得困难。 图片: enter image description here

var $table = $('#table');
var mydata = [{
    "id": 0,
    "name": "test0",
    "price": "$0"
  },
  {
    "id": 1,
    "name": "test1",
    "price": "$1"
  },
  {
    "id": 2,
    "name": "test2",
    "price": "$2"
  }
];

$(function() {
  $('#table').bootstrapTable({
    data: mydata
  });
});
<html>

<head>
  <meta charset="utf-8">
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.6/css/bootstrap.min.css">
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-table/1.10.1/bootstrap-table.min.css">
  <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.6/js/bootstrap.min.js"></script>
  <script src="https://cdnjs.cloudflarenter code heree.com/ajax/libs/bootstrap-table/1.10.1/bootstrap-table.min.js"></script>
</head>

<body>
  <div class="container">
    <table id="table" data-search="true">
      <thead>
        <tr>
          <th data-field="id" data-sortable="true">Item ID</th>
          <th data-field="name" data-sortable="true">Item Name</th>
          <th data-field="price" data-sortable="true">Item Price</th>
          <th>Show Name</th>
        </tr>
      </thead>
      <tbody>
        <tr></tr>
        <tr></tr>
        <tr></tr>
        <tr>
          <td>
            <button type="button" class="btn btn-primary btn-sm">Small button</button>
          </td>
        </tr>
      </tbody>
    </table>
  </div>
</body>

</html>

我将非常感谢您的帮助。


所以,您想在单击项目名称时打开一个弹出窗口(模态框)? - Ronnie Oosting
是的,弹出窗口。但是在按钮点击后。点击按钮后首先显示test0,然后点击按钮2显示test1,依此类推。 - user3794273
你好,这是你需要的吗?https://jsfiddle.net/tmyfssw2/. 我没有添加CSS,所以请复制粘贴它。 :P - Ronnie Oosting
在静态代码中,这很容易实现。问题是如何在从JSON读取时实现? - user3794273
1个回答

7
希望这有所帮助……
    <html>

<head>
  <meta charset="utf-8">
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.6/css/bootstrap.min.css">
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-table/1.10.1/bootstrap-table.min.css">
  <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.6/js/bootstrap.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-table/1.10.1/bootstrap-table.min.js"></script>
</head>

<body>
  <div class="container">
    <table id="table" data-search="true">
      <thead>
        <tr>
          <th data-field="id" data-sortable="true">Item ID</th>
          <th data-field="name" data-sortable="true">Item Name</th>
          <th data-field="price" data-sortable="true">Item Price</th>
          <th>Show Name</th>
        </tr>
      </thead>
      <tbody>

      </tbody>
    </table>
  </div>

    <!-- Modal -->
    <div id="myModal" class="modal fade" role="dialog">
      <div class="modal-dialog">

        <!-- Modal content-->
        <div class="modal-content">
          <div class="modal-header">
            <button type="button" class="close" data-dismiss="modal">&times;</button>
            <h4 class="modal-title"></h4>
          </div>
          <div class="modal-body">
            <p></p>
          </div>
          <div class="modal-footer">
            <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
          </div>
        </div>

      </div>
    </div>


    <script>


            var $table = $('#table');
            var mydata = [{
                "id": 0,
                "name": "test0",
                "price": "$0"
              },
              {
                "id": 1,
                "name": "test1",
                "price": "$1"
              },
              {
                "id": 2,
                "name": "test2",
                "price": "$2"
              }
            ];

            $(function() {
              $('#table').bootstrapTable({
                data: mydata,
                columns: [ {},{},{},  
                {
                  field: 'operate',
                  title: 'Edit',
                  align: 'center',
                  valign: 'middle',
                  clickToSelect: false,
                  formatter : function(value,row,index) {
                    //return '<input name="elementname"  value="'+value+'"/>';
                    return '<button class=\'btn btn-primary \' pageName="'+row.name+'" pageDetails="'+row.price+'"  >Edit</button> ';
                  }
                }
              ]               
              });


            $(".btn").click(function(){
                var pageDetails = $(this).attr('pageDetails');
                var pageName = $(this).attr('pageName');
                $(".modal .modal-title").html(pageName);
                $(".modal .modal-body").html(pageDetails);
                $(".modal").modal("show");

            });

            });




    </script>




</body>

</html>

1
你能解释一下你在做什么,而不只是发布一个可能的答案吗?这样原帖作者和其他人就可以从你的代码中学习。 - Ronnie Oosting
我添加了代码来在您的数据表中添加列。格式化程序会添加包含按钮的列。按钮数据属性包含要在模态框中使用的信息。$. Btn单击函数在单击按钮时获取数据属性,然后将它们传递给模态框。希望这样解释清楚了... - T.Shah
是的先生!这很清楚 :) 但这一次,我想问的是“你能解释一下你正在做什么而不只是发布一个可能的答案吗?” :) - user3794273
其实...你没有做错任何事情...你只是没去做!! 在你初始化bootstrap表格的函数中,我添加了代码来为每一行添加一个列,加入了模态框代码并添加了jQuery函数来在每个按钮点击时填充相关信息到模态框中。这就是我最擅长的解释方式了... - T.Shah

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接