How do i create a delete button on every row using the SlickGrid plugin?

后端 未结 2 1566
佛祖请我去吃肉
佛祖请我去吃肉 2021-02-19 03:43

How do i create a delete button on every row using the SlickGrid plugin? I need a button that can delete the whole corresponding row.

相关标签:
2条回答
  • 2021-02-19 04:23

    An alternative to using jQuery to bind to the click event is to use the onClick event of SlickGrid. Similar to (now deprecated) jQuery .live() or now .on() with delegated handlers, the use of onClick will allow the functionality to work without having to constantly reattach handlers when new rows are added, deleted, shown, etc.

    Enhancing Jibi's example, replace the $('.del').live('click', function(){... with the following:

    // 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();
        }
    });
    
    0 讨论(0)
  • 2021-02-19 04:40

    Use your column formatter to get this done.

    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();        
    });
    
    0 讨论(0)
提交回复
热议问题