jQWidgets Forums

jQuery UI Widgets Forums Grid jqxGrid shows [object Object] instead of empty strings

This topic contains 4 replies, has 2 voices, and was last updated by  nk 12 years, 3 months ago.

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

  • nk
    Member

    Hi!

    I have a problem with the following code:

    <!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.7.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/jqxgrid.js"></script>
    <script type="text/javascript" src="../../jqwidgets/jqxgrid.selection.js"></script>
    <script type="text/javascript">
    $(document).ready(function () {
    var theme = '';
    var data = [
    {"Id":1,"Name":{"String":"Vasja Pupkin","Valid":true}},
    {"Id":2,"Name":{"String":"","Valid":false}}
    ];
    var source = {
    localdata: data,
    datatype: "json",
    datafields: [
    {name: 'Id'},
    {name: 'Name', map: 'Name>String'}
    ]
    };
    $("#jqxgrid").jqxGrid({
    source: source,
    width: 200,
    autoheight: true,
    columns: [
    {text: 'Id', datafield: 'Id', width: 100},
    {text: 'Name', datafield: 'Name', width: 100}
    ]
    });
    });
    </script>
    </head>
    <body class='default'>
    <div id="jqxgrid"></div>
    </body>
    </html>

    It shows [object Object] instead of an empty string in the second row. What am I doing wrong?

    -Nikolai


    Peter Stoev
    Keymaster

    Hi Nikolai,

    Here’s a sample code:

    <!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.7.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/jqxgrid.js"></script>
    <script type="text/javascript" src="../../jqwidgets/jqxgrid.selection.js"></script>
    <script type="text/javascript" src="../../jqwidgets/jqxgrid.columnsresize.js"></script>
    <script type="text/javascript">
    $(document).ready(function () {
    var data = [
    { "Id": 1, "Name": { "String": "Vasja Pupkin", "Valid": true} },
    { "Id": 2, "Name": { "String": "", "Valid": false} }
    ];
    var source = {
    localdata: data,
    datatype: "json",
    datafields: [
    { name: 'Id' },
    { name: 'String', map: 'Name>String' }
    ]
    };
    var dataAdapter = new $.jqx.dataAdapter(source);
    $("#jqxgrid").jqxGrid({
    source: source,
    width: 200,
    autoheight: true,
    columns: [
    { text: 'Id', datafield: 'Id', width: 100 },
    { text: 'Name', datafield: 'String', width: 100 }
    ]
    });
    });
    </script>
    </head>
    <body class='default'>
    <div id='jqxgrid'">
    </div>
    </body>
    </html>

    Best Regards,
    Peter Stoev

    jQWidgets Team
    http://www.jqwidgets.com


    nk
    Member

    It works, thanks! It seems ‘datafield’ in ‘columns’ can be anything except “Name”.


    Peter Stoev
    Keymaster

    The datafield should point to the field that actually contains the information that should be displayed. That’s not “Name” in your JSON because Name is Object with additional fields.

    Best Regards,
    Peter Stoev

    jQWidgets Team
    http://www.jqwidgets.com


    nk
    Member

    Yes, of course, that’s why there is the mapping part:

    “{name: ‘Name’, map: ‘Name>String’}”

    It starts working as expected by changing the key:

    {name: ‘String’, map: ‘Name>String’}
    or
    {name: ‘name’, map: ‘Name>String’}
    or
    {name: ‘AnythingElseButName’, map: ‘Name>String’}

    -Nikolai

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

You must be logged in to reply to this topic.