如何使用 SlickGrid 插件在每一行上创建一个删除按钮?

Posted

技术标签:

【中文标题】如何使用 SlickGrid 插件在每一行上创建一个删除按钮?【英文标题】:How do i create a delete button on every row using the SlickGrid plugin? 【发布时间】:2012-04-04 18:40:48 【问题描述】:

我需要一个可以删除整个对应行的按钮。

【问题讨论】:

在提问时,如果您提供一些您尝试过的代码,通常会得到更多的回应和更好的帮助,然后人们可以帮助您找出问题所在。 【参考方案1】:

使用您的列格式化程序来完成这项工作。

var column = id:delCol, field:'del', name:'Delete', width:250, formatter:buttonFormatter

//Now define your buttonFormatter function
function buttonFormatter(row,cell,value,columnDef,dataContext)  
    var button = "<input class='del' type='button' id='"+ dataContext.id +"' />";
    //the id is so that you can identify the row when the particular button is clicked
    return button;
    //Now the row will display your button


//Now you can use jquery to hook up your delete button event
$('.del').live('click', function()
    var me = $(this), id = me.attr('id');
    //assuming you have used a dataView to create your grid
    //also assuming that its variable name is called 'dataView'
    //use the following code to get the item to be deleted from it
    dataView.deleteItem(id);
    //This is possible because in the formatter we have assigned the row id itself as the button id;
    //now assuming your grid is called 'grid'
    grid.invalidate();        
);

【讨论】:

【参考方案2】:

使用 jQuery 绑定到 click 事件的另一种方法是使用 SlickGrid 的 onClick 事件。类似于(现已弃用)jQuery .live() 或现在 .on() 与委托处理程序,使用 onClick 将允许功能工作,而无需在添加、删除、显示新行等时不断重新附加处理程序。

增强吉比的例子,将$('.del').live('click', function()...替换为以下内容:

// assuming grid is the var name containing your grid
grid.onClick.subscribe( function (e, args) 
    // if the delete column (where field was assigned 'del' in the column definition)
    if (args.grid.getColumns()[args.cell].field == 'del') 
       // perform delete
       // assume delete function uses data field id; simply pass args.row if row number is accepted for delete
       dataView.deleteItem(args.grid.getDataItem(args.row).id);
       args.grid.invalidate();
    
);

【讨论】:

我会稍微改进一下这种方法。如果您在此列中有一个按钮,您将收到它的事件对象。因此,您可以检测用户是单击了表空间还是单击了您的按钮。

以上是关于如何使用 SlickGrid 插件在每一行上创建一个删除按钮?的主要内容,如果未能解决你的问题,请参考以下文章

Slickgrid:如何使用新的复选框选择列插件获取选定的行?

如何在 slickgrid 的每一行上创建一个删除按钮并确认?

如何在 Slickgrid 的顶部添加新行?

如何在 SlickGrid 中使用 javascript 添加行

简单的 jQuery SlickGrid JSON 示例或文档

栅格系统