jQuery UI Widgets Forums Grid Grid column : Delete icon at header level and checkboxes at row level ???

This topic contains 6 replies, has 2 voices, and was last updated by  mallepaddi 12 years, 10 months ago.

Viewing 7 posts - 1 through 7 (of 7 total)
  • Author

  • mallepaddi
    Participant

    Hi

    I would like to show “Delete” icon like header level and displaying check boxes at row level, would it be possible of doing this ?

    Thanks


    Dimitar
    Participant

    Hello mallepaddi,

    Yes, it is possible by using the renderer callback function which can modify a column’s header. Here is an example, based on the demo CheckBox Column:

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <link rel="stylesheet" href="../../jqwidgets/styles/jqx.base.css" type="text/css" />
    <script type="text/javascript" src="../../scripts/jquery-1.10.2.min.js"></script>
    <script type="text/javascript" src="../../jqwidgets/jqxcore.js"></script>
    <script type="text/javascript" src="../../jqwidgets/jqxdata.js"></script>
    <script type="text/javascript" src="../../jqwidgets/jqxbuttons.js"></script>
    <script type="text/javascript" src="../../jqwidgets/jqxscrollbar.js"></script>
    <script type="text/javascript" src="../../jqwidgets/jqxmenu.js"></script>
    <script type="text/javascript" src="../../jqwidgets/jqxcheckbox.js"></script>
    <script type="text/javascript" src="../../jqwidgets/jqxlistbox.js"></script>
    <script type="text/javascript" src="../../jqwidgets/jqxdropdownlist.js"></script>
    <script type="text/javascript" src="../../jqwidgets/jqxgrid.js"></script>
    <script type="text/javascript" src="../../jqwidgets/jqxgrid.edit.js"></script>
    <script type="text/javascript" src="../../jqwidgets/jqxgrid.selection.js"></script>
    <script type="text/javascript" src="../../scripts/demos.js"></script>
    <script type="text/javascript" src="generatedata.js"></script>
    <script type="text/javascript">
    $(document).ready(function () {
    // prepare the data
    var data = generatedata(200, true);
    var source =
    {
    localdata: data,
    datafields:
    [
    { name: 'firstname', type: 'string' },
    { name: 'lastname', type: 'string' },
    { name: 'productname', type: 'string' },
    { name: 'available', type: 'bool' },
    { name: 'quantity', type: 'number' },
    { name: 'price', type: 'number' },
    { name: 'total', type: 'number' }
    ],
    datatype: "array"
    };
    var dataAdapter = new $.jqx.dataAdapter(source);
    // initialize jqxGrid
    $("#jqxgrid").jqxGrid(
    {
    width: 670,
    source: dataAdapter,
    editable: true,
    columns: [
    { text: 'First Name', editable: false, datafield: 'firstname', width: 100 },
    { text: 'Last Name', editable: false, datafield: 'lastname', width: 100 },
    { text: 'Product', editable: false, datafield: 'productname', width: 180 },
    { text: 'Available', datafield: 'available', threestatecheckbox: true, columntype: 'checkbox', width: 70, renderer: function () {
    return '<button id="delete">Delete</button>';
    }
    },
    { text: 'Quantity', editable: false, datafield: 'quantity', width: 80, cellsalign: 'right' },
    { text: 'Unit Price', editable: false, datafield: 'price', width: 90, cellsalign: 'right', cellsformat: 'c2' },
    { text: 'Total', editable: false, datafield: 'total', width: 100, cellsalign: 'right', cellsformat: 'c2' }
    ]
    });
    });
    </script>
    </head>
    <body class='default'>
    <div id='jqxWidget' style="font-size: 13px; font-family: Verdana; float: left;">
    <div id="jqxgrid">
    </div>
    </div>
    </body>
    </html>

    Instead of a button, renderer may return an image:

    return '<img src="delete.png" />';

    Best Regards,
    Dimitar

    jQWidgets team
    http://www.jqwidgets.com/


    mallepaddi
    Participant

    perfect,

    I have written like …

    { text: ”, datafield: ‘incart’, threestatecheckbox: false, columntype: ‘checkbox’, width: ‘5%’, renderer: function () {
    return ““;
    }
    }

    Image appearing at header level followed by ‘check boxes”

    but following event is not firing to delete selected items …

    $(“#delete”).click(function(e){ alert(‘clecked’); }

    Please help.

    Thanks


    mallepaddi
    Participant

    Problem solved … with combination of “renderer” and “rendered”.

    Thanks


    Dimitar
    Participant

    Hi mallepaddi,

    Here is a modification of the example that shows how to bind to the button’s onclick event:

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <link rel="stylesheet" href="../../jqwidgets/styles/jqx.base.css" type="text/css" />
    <script type="text/javascript" src="../../scripts/jquery-1.10.2.min.js"></script>
    <script type="text/javascript" src="../../jqwidgets/jqxcore.js"></script>
    <script type="text/javascript" src="../../jqwidgets/jqxdata.js"></script>
    <script type="text/javascript" src="../../jqwidgets/jqxbuttons.js"></script>
    <script type="text/javascript" src="../../jqwidgets/jqxscrollbar.js"></script>
    <script type="text/javascript" src="../../jqwidgets/jqxmenu.js"></script>
    <script type="text/javascript" src="../../jqwidgets/jqxcheckbox.js"></script>
    <script type="text/javascript" src="../../jqwidgets/jqxlistbox.js"></script>
    <script type="text/javascript" src="../../jqwidgets/jqxdropdownlist.js"></script>
    <script type="text/javascript" src="../../jqwidgets/jqxgrid.js"></script>
    <script type="text/javascript" src="../../jqwidgets/jqxgrid.edit.js"></script>
    <script type="text/javascript" src="../../jqwidgets/jqxgrid.selection.js"></script>
    <script type="text/javascript" src="../../scripts/demos.js"></script>
    <script type="text/javascript" src="generatedata.js"></script>
    <script type="text/javascript">
    $(document).ready(function () {
    // prepare the data
    var data = generatedata(200, true);
    var source =
    {
    localdata: data,
    datafields:
    [
    { name: 'firstname', type: 'string' },
    { name: 'lastname', type: 'string' },
    { name: 'productname', type: 'string' },
    { name: 'available', type: 'bool' },
    { name: 'quantity', type: 'number' },
    { name: 'price', type: 'number' },
    { name: 'total', type: 'number' }
    ],
    datatype: "array"
    };
    var dataAdapter = new $.jqx.dataAdapter(source);
    // initialize jqxGrid
    $("#jqxgrid").jqxGrid(
    {
    width: 670,
    source: dataAdapter,
    editable: true,
    columns: [
    { text: 'First Name', editable: false, datafield: 'firstname', width: 100 },
    { text: 'Last Name', editable: false, datafield: 'lastname', width: 100 },
    { text: 'Product', editable: false, datafield: 'productname', width: 180 },
    { text: 'Available', datafield: 'available', threestatecheckbox: true, columntype: 'checkbox', width: 70, renderer: function () {
    return '<button id="delete" onclick="clickFunction()">Delete</button>';
    }
    },
    { text: 'Quantity', editable: false, datafield: 'quantity', width: 80, cellsalign: 'right' },
    { text: 'Unit Price', editable: false, datafield: 'price', width: 90, cellsalign: 'right', cellsformat: 'c2' },
    { text: 'Total', editable: false, datafield: 'total', width: 100, cellsalign: 'right', cellsformat: 'c2' }
    ]
    });
    });
    </script>
    </head>
    <body class='default'>
    <div id='jqxWidget' style="font-size: 13px; font-family: Verdana; float: left;">
    <div id="jqxgrid">
    <script type="text/javascript">
    var clickFunction = function () {
    alert("clicked");
    };
    </script>
    </div>
    </div>
    </body>
    </html>

    Best Regards,
    Dimitar

    jQWidgets team
    http://www.jqwidgets.com/


    mallepaddi
    Participant

    Hi

    I’ve managed to click image created at header level for deleting items selected in shopping cart.

    columns: [
    { text: ”, datafield: ‘incart’, threestatecheckbox: false, columntype: ‘checkbox’, width: 25,
    renderer: function () {
    return “

    “;
    },
    rendered: function (columnHeaderElement) {
    $(columnHeaderElement).on(‘click’, function (event) {
    deleteRowsFromCart(event);
    });
    }
    },
    { text: ‘Description’, datafield: ‘description’, editable: false,width: 190},
    { text: ‘Price’, datafield: ‘price’, width: 70, editable: false,cellsalign: ‘right’, align: ‘right’},
    { text: ‘Qty’, datafield: ‘qty’, width: 60, editable: false, cellsalign: ‘right’, align: ‘right’},
    { text: ‘UoM’, datafield: ‘uom’, editable: false}
    ]

    but i can click “Delete” image at header if having following code ..

    var cartdataAdapter = new $.jqx.dataAdapter(cartsource, {
    downloadComplete: function (data, status, xhr) { },
    loadComplete: function (data) {
    $(“#columntable”+”jqxgrid1”).find(“[role=’columnheader’]”).eq(0).find(“div”).css(‘width’,’25’).css(‘margin-left’,’0px’);
    },
    loadError: function (xhr, status, error) { alert(‘Data load error !!!’);}
    });

    But “Delete” icon can’t be clicked if i have deleted one item from shopping cart , i guess it could be because of positioning / alignment of code generating by grid header.

    How to solve this issue ..

    Thanks


    mallepaddi
    Participant

    Hi

    Work around …

    var adjustDeleteIconPosition = function(event){
    $(“#columntable”+”jqxgrid1”).find(“[role=’columnheader’]”).eq(0).find(“div”).css(‘width’,’25’).css(‘margin-left’,’0px’);
    }

    calling above method in deleteRowsFromShoppingCart() method. Position of Deleting icon is consistent now ..

    Thanks.

Viewing 7 posts - 1 through 7 (of 7 total)

You must be logged in to reply to this topic.