4

我试图在其中一列的单元格中放置一个按钮,并在单击它时执行某些操作。

例如,我将这些行添加到 SlickGrid 示例 1 ( http://mleibman.github.io/SlickGrid/examples/example1-simple.html )

首先到我添加的列数组:

    {id: "Report", name: "Report", field: "Report", width: 40, sortable: true, formatter:reportFormatter}

然后我补充说:

      function reportFormatter(row, cell, value, columnDef, dataContext) {
          return "<input type='button' value='show' id='reportBtn'/>";
      }

      $('#reportBtn').click(function() {
          alert("hello");
      });

按钮出现在单元格中,但未调用单击事件!我一定是做错了什么,但我一辈子都想不通,谁能帮忙?谢谢!

4

3 回答 3

2

slick.formatters.js

...
"btnForm": buttonsFormatter // add Slick.Formatters
..
  function buttonsFormatter(row, cell, value, columnDef, dataContext) {
      return  "<input type='button' value='"+value+"' id='btnForm' value2='"+row+"' value3='"+cell+"' onClick='fnBtnClick(this);'/>";
  }

添加您的 html 脚本

function fnBtnClick( objBtn ){
 alert( "row::[" + objBtn.value2 + "]\n\ncell::[" + objBtn.value3 + "]" );      
}
于 2013-10-16T07:52:14.853 回答
2

您应该使用网格事件而不是按钮事件,如下所示,

  1. 将调用网格的onclick事件,
  2. 检查单击的字段是否是您的按钮之一
  3. 做你的动作

    grid.onClick.subscribe(function (e, args) {
      //check if your button was clicked  
      if ($(e.target).hasClass("btn")) {
            var item = dataView.getItem(args.row);
            ///do your action
        }
    
    });
    
于 2017-10-14T10:29:08.493 回答
1

使用预编译的模板光滑网格示例。添加属性,例如。ImageTrial,并在数据结构中用动态输入按钮填充属性。

<script type=" " id="testtemplate">
<div class="test">
    <b><%=ImageTrial%></b>
     <b><%=ImageTrial2%></b>
</div>

dataForCell["ImageTrial"] = "<button type=\"button\" onclick=\"alert('a " + 1 + "')\">s</button>";

dataForCell["ImageTrial2"] = "<button type=\"button\" onclick=\"alert('b " + 2 + "')\">b</button>";

祝你好运

于 2013-07-24T14:47:07.087 回答