无法在SlickGrid单元格中放置按钮

时间:2013-04-09 02:46:30

标签: javascript slickgrid

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

例如,我将这些行添加到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");
      });

按钮出现在单元格中,但是没有调用click事件! 我必须做错事但不能为我的生活搞清楚 有人可以帮忙吗? 谢谢!

3 个答案:

答案 0 :(得分: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
        }
    
    });
    

答案 1 :(得分: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>";

祝你好运

答案 2 :(得分:1)

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 + "]" );      
}