jQWidgets Forums

jQuery UI Widgets Forums Grid Grid with rowdetails something not expect

This topic contains 5 replies, has 2 voices, and was last updated by  xililiulx 11 years, 2 months ago.

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

  • xililiulx
    Participant
    Hi,
      I bind the data first, it works well. But when the data selection conditions changed, I rebind grid by the same function(data changed or not changed), sometime the rowdetails all auto expand , sometime I click showrowdetail picture others row expanded but the clicked row not expand.
    
    Code following(I just supported demo):
    
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <title id='Description'>This example shows how to display row details after each grid row.</title>
        <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/jqxgrid.js"></script>
        <script type="text/javascript" src="../../jqwidgets/jqxgrid.selection.js"></script>
        <script type="text/javascript" src="../../jqwidgets/jqxtabs.js"></script>
        <script type="text/javascript" src="../../scripts/demos.js"></script>
        <script type="text/javascript">
            $(document).ready(function () {
                // prepare the data
                var data = new Array();
    
                var firstNames = ["Nancy", "Andrew", "Janet", "Margaret", "Steven", "Michael", "Robert", "Laura", "Anne"];
                var lastNames = ["Davolio", "Fuller", "Leverling", "Peacock", "Buchanan", "Suyama", "King", "Callahan", "Dodsworth"];
                var titles = ["Sales Representative", "Vice President, Sales", "Sales Representative", "Sales Representative", "Sales Manager", "Sales Representative", "Sales Representative", "Inside Sales Coordinator", "Sales Representative"];
                var titleofcourtesy = ["Ms.", "Dr.", "Ms.", "Mrs.", "Mr.", "Mr.", "Mr.", "Ms.", "Ms."];
                var birthdate = ["08-Dec-48", "19-Feb-52", "30-Aug-63", "19-Sep-37", "04-Mar-55", "02-Jul-63", "29-May-60", "09-Jan-58", "27-Jan-66"];
                var hiredate = ["01-May-92", "14-Aug-92", "01-Apr-92", "03-May-93", "17-Oct-93", "17-Oct-93", "02-Jan-94", "05-Mar-94", "15-Nov-94"];
                var address = ["507 - 20th Ave. E. Apt. 2A", "908 W. Capital Way", "722 Moss Bay Blvd.", "4110 Old Redmond Rd.", "14 Garrett Hill", "Coventry House", "Miner Rd.", "Edgeham Hollow", "Winchester Way", "4726 - 11th Ave. N.E.", "7 Houndstooth Rd."];
                var city = ["Seattle", "Tacoma", "Kirkland", "Redmond", "London", "London", "London", "Seattle", "London"];
                var postalcode = ["98122", "98401", "98033", "98052", "SW1 8JR", "EC2 7JR", "RG1 9SP", "98105", "WG2 7LT"];
                var country = ["USA", "USA", "USA", "USA", "UK", "UK", "UK", "USA", "UK"];
                var homephone = ["(206) 555-9857", "(206) 555-9482", "(206) 555-3412", "(206) 555-8122", "(71) 555-4848", "(71) 555-7773", "(71) 555-5598", "(206) 555-1189", "(71) 555-4444"];
                var notes = ["Education includes a BA in psychology from Colorado State University in 1970.  She also completed 'The Art of the Cold Call.'  Nancy is a member of Toastmasters International.",
                    "Andrew received his BTS commercial in 1974 and a Ph.D. in international marketing from the University of Dallas in 1981.  He is fluent in French and Italian and reads German.  He joined the company as a sales representative, was promoted to sales manager in January 1992 and to vice president of sales in March 1993.  Andrew is a member of the Sales Management Roundtable, the Seattle Chamber of Commerce, and the Pacific Rim Importers Association.",
                    "Janet has a BS degree in chemistry from Boston College (1984).  She has also completed a certificate program in food retailing management.  Janet was hired as a sales associate in 1991 and promoted to sales representative in February 1992.",
                    "Margaret holds a BA in English literature from Concordia College (1958) and an MA from the American Institute of Culinary Arts (1966).  She was assigned to the London office temporarily from July through November 1992.",
                    "Steven Buchanan graduated from St. Andrews University, Scotland, with a BSC degree in 1976.  Upon joining the company as a sales representative in 1992, he spent 6 months in an orientation program at the Seattle office and then returned to his permanent post in London.  He was promoted to sales manager in March 1993.  Mr. Buchanan has completed the courses 'Successful Telemarketing' and 'International Sales Management.'  He is fluent in French.",
                    "Michael is a graduate of Sussex University (MA, economics, 1983) and the University of California at Los Angeles (MBA, marketing, 1986).  He has also taken the courses 'Multi-Cultural Selling' and 'Time Management for the Sales Professional.'  He is fluent in Japanese and can read and write French, Portuguese, and Spanish.",
                    "Robert King served in the Peace Corps and traveled extensively before completing his degree in English at the University of Michigan in 1992, the year he joined the company.  After completing a course entitled 'Selling in Europe,' he was transferred to the London office in March 1993.",
                    "Laura received a BA in psychology from the University of Washington.  She has also completed a course in business French.  She reads and writes French.",
                    "Anne has a BA degree in English from St. Lawrence College.  She is fluent in French and German."];
    
                var k = 0;
                for (var i = 0; i < firstNames.length; i++) {
                    var row = {};
                    row["firstname"] = firstNames[k];
                    row["lastname"] = lastNames[k];
                    row["title"] = titles[k];
                    row["titleofcourtesy"] = titleofcourtesy[k];
                    row["birthdate"] = birthdate[k];
                    row["hiredate"] = hiredate[k];
                    row["address"] = address[k];
                    row["city"] = city[k];
                    row["postalcode"] = postalcode[k];
                    row["country"] = country[k];
                    row["homephone"] = homephone[k];
                    row["notes"] = notes[k];
                    data[i] = row;
                    k++;
                }
    
                var source =
                {
                    localdata: data,
                    datatype: "array"
                };
    
                var initrowdetails = function (index, parentElement, gridElement, datarecord) {
                    var tabsdiv = null;
                    var information = null;
                    var notes = null;
                    tabsdiv = $($(parentElement).children()[0]);
                    if (tabsdiv != null) {
                        information = tabsdiv.find('.information');
                        notes = tabsdiv.find('.notes');
                        var title = tabsdiv.find('.title');
                        title.text(datarecord.firstname);
    
                        var container = $('<div style="margin: 5px;"></div>')
                        container.appendTo($(information));
                        var photocolumn = $('<div style="float: left; width: 15%;"></div>');
                        var leftcolumn = $('<div style="float: left; width: 45%;"></div>');
                        var rightcolumn = $('<div style="float: left; width: 40%;"></div>');
                        container.append(photocolumn);
                        container.append(leftcolumn);
                        container.append(rightcolumn);
    
                        var photo = $("<div class='jqx-rc-all' style='margin: 10px;'><b>Photo:</b></div>");
                        var image = $("<div style='margin-top: 10px;'></div>");
                        var imgurl = '../../images/' + datarecord.firstname.toLowerCase() + '.png';
                        var img = $('<img height="60" src="' + imgurl + '" />');
                        image.append(img);
                        image.appendTo(photo);
                        photocolumn.append(photo);
    
                        var firstname = "<div style='margin: 10px;'><b>First Name:</b> " + datarecord.firstname + "</div>";
                        var lastname = "<div style='margin: 10px;'><b>Last Name:</b> " + datarecord.lastname + "</div>";
                        var title = "<div style='margin: 10px;'><b>Title:</b> " + datarecord.title + "</div>";
                        var address = "<div style='margin: 10px;'><b>Address:</b> " + datarecord.address + "</div>";
                        $(leftcolumn).append(firstname);
                        $(leftcolumn).append(lastname);
                        $(leftcolumn).append(title);
                        $(leftcolumn).append(address);
    
                        var postalcode = "<div style='margin: 10px;'><b>Postal Code:</b> " + datarecord.postalcode + "</div>";
                        var city = "<div style='margin: 10px;'><b>City:</b> " + datarecord.city + "</div>";
                        var phone = "<div style='margin: 10px;'><b>Phone:</b> " + datarecord.homephone + "</div>";
                        var hiredate = "<div style='margin: 10px;'><b>Hire Date:</b> " + datarecord.hiredate + "</div>";
    
                        $(rightcolumn).append(postalcode);
                        $(rightcolumn).append(city);
                        $(rightcolumn).append(phone);
                        $(rightcolumn).append(hiredate);
    
                        var notescontainer = $('<div style="white-space: normal; margin: 5px;"><span>' + datarecord.notes + '</span></div>');
                        $(notes).append(notescontainer);
                        $(tabsdiv).jqxTabs({ width: 600, height: 170});
                    }
                }
                var dataAdapter = new $.jqx.dataAdapter(source);
    
                $("#jqxgrid").jqxGrid(
                {
                    width: 670,
                    height: 250,
                    source: dataAdapter,
                    rowdetails: true,
                    rowdetailstemplate: { rowdetails: "<div style='margin: 10px;'><ul style='margin-left: 30px;'><li class='title'><li>Notes</li><div class='information'></div><div class='notes'></div></div>", rowdetailsheight: 200 },
                    initrowdetails: initrowdetails,
                    columns: [
                          { text: 'First Name', datafield: 'firstname', width: 100 },
                          { text: 'Last Name', datafield: 'lastname', width: 100 },
                          { text: 'Title', datafield: 'title', width: 180 },
                          { text: 'City', datafield: 'city', width: 100 },
                          { text: 'Country', datafield: 'country', width: 140 }
                      ]
                });
            });
    
            function RebindDetails() {
                $("#jqxgrid").jqxGrid("clear");
    
                // prepare the data
                var data = new Array();
    
                var firstNames = ["Nancy1", "Andrew1", "Janet1", "Margaret1", "Steven1", "Michael1", "Robert1", "Laura1", "Anne1"];
                var lastNames = ["Davolio", "Fuller", "Leverling", "Peacock", "Buchanan", "Suyama", "King", "Callahan", "Dodsworth"];
                var titles = ["Sales Representative", "Vice President, Sales", "Sales Representative", "Sales Representative", "Sales Manager", "Sales Representative", "Sales Representative", "Inside Sales Coordinator", "Sales Representative"];
                var titleofcourtesy = ["Ms.", "Dr.", "Ms.", "Mrs.", "Mr.", "Mr.", "Mr.", "Ms.", "Ms."];
                var birthdate = ["08-Dec-48", "19-Feb-52", "30-Aug-63", "19-Sep-37", "04-Mar-55", "02-Jul-63", "29-May-60", "09-Jan-58", "27-Jan-66"];
                var hiredate = ["01-May-92", "14-Aug-92", "01-Apr-92", "03-May-93", "17-Oct-93", "17-Oct-93", "02-Jan-94", "05-Mar-94", "15-Nov-94"];
                var address = ["507 - 20th Ave. E. Apt. 2A", "908 W. Capital Way", "722 Moss Bay Blvd.", "4110 Old Redmond Rd.", "14 Garrett Hill", "Coventry House", "Miner Rd.", "Edgeham Hollow", "Winchester Way", "4726 - 11th Ave. N.E.", "7 Houndstooth Rd."];
                var city = ["Seattle", "Tacoma", "Kirkland", "Redmond", "London", "London", "London", "Seattle", "London"];
                var postalcode = ["98122", "98401", "98033", "98052", "SW1 8JR", "EC2 7JR", "RG1 9SP", "98105", "WG2 7LT"];
                var country = ["USA", "USA", "USA", "USA", "UK", "UK", "UK", "USA", "UK"];
                var homephone = ["(206) 555-9857", "(206) 555-9482", "(206) 555-3412", "(206) 555-8122", "(71) 555-4848", "(71) 555-7773", "(71) 555-5598", "(206) 555-1189", "(71) 555-4444"];
                var notes = ["Education includes a BA in psychology from Colorado State University in 1970.  She also completed 'The Art of the Cold Call.'  Nancy is a member of Toastmasters International.",
                    "Andrew received his BTS commercial in 1974 and a Ph.D. in international marketing from the University of Dallas in 1981.  He is fluent in French and Italian and reads German.  He joined the company as a sales representative, was promoted to sales manager in January 1992 and to vice president of sales in March 1993.  Andrew is a member of the Sales Management Roundtable, the Seattle Chamber of Commerce, and the Pacific Rim Importers Association.",
                    "Janet has a BS degree in chemistry from Boston College (1984).  She has also completed a certificate program in food retailing management.  Janet was hired as a sales associate in 1991 and promoted to sales representative in February 1992.",
                    "Margaret holds a BA in English literature from Concordia College (1958) and an MA from the American Institute of Culinary Arts (1966).  She was assigned to the London office temporarily from July through November 1992.",
                    "Steven Buchanan graduated from St. Andrews University, Scotland, with a BSC degree in 1976.  Upon joining the company as a sales representative in 1992, he spent 6 months in an orientation program at the Seattle office and then returned to his permanent post in London.  He was promoted to sales manager in March 1993.  Mr. Buchanan has completed the courses 'Successful Telemarketing' and 'International Sales Management.'  He is fluent in French.",
                    "Michael is a graduate of Sussex University (MA, economics, 1983) and the University of California at Los Angeles (MBA, marketing, 1986).  He has also taken the courses 'Multi-Cultural Selling' and 'Time Management for the Sales Professional.'  He is fluent in Japanese and can read and write French, Portuguese, and Spanish.",
                    "Robert King served in the Peace Corps and traveled extensively before completing his degree in English at the University of Michigan in 1992, the year he joined the company.  After completing a course entitled 'Selling in Europe,' he was transferred to the London office in March 1993.",
                    "Laura received a BA in psychology from the University of Washington.  She has also completed a course in business French.  She reads and writes French.",
                    "Anne has a BA degree in English from St. Lawrence College.  She is fluent in French and German."];
    
                var k = 0;
                for (var i = 0; i < firstNames.length; i++) {
                    var row = {};
                    row["firstname"] = firstNames[k];
                    row["lastname"] = lastNames[k];
                    row["title"] = titles[k];
                    row["titleofcourtesy"] = titleofcourtesy[k];
                    row["birthdate"] = birthdate[k];
                    row["hiredate"] = hiredate[k];
                    row["address"] = address[k];
                    row["city"] = city[k];
                    row["postalcode"] = postalcode[k];
                    row["country"] = country[k];
                    row["homephone"] = homephone[k];
                    row["notes"] = notes[k];
                    data[i] = row;
                    k++;
                }
    
                var source =
                {
                    localdata: data,
                    datatype: "array"
                };
    
                var initrowdetails = function (index, parentElement, gridElement, datarecord) {
                    var tabsdiv = null;
                    var information = null;
                    var notes = null;
                    tabsdiv = $($(parentElement).children()[0]);
                    if (tabsdiv != null) {
                        information = tabsdiv.find('.information');
                        notes = tabsdiv.find('.notes');
                        var title = tabsdiv.find('.title');
                        title.text(datarecord.firstname);
    
                        var container = $('<div style="margin: 5px;"></div>')
                        container.appendTo($(information));
                        var photocolumn = $('<div style="float: left; width: 15%;"></div>');
                        var leftcolumn = $('<div style="float: left; width: 45%;"></div>');
                        var rightcolumn = $('<div style="float: left; width: 40%;"></div>');
                        container.append(photocolumn);
                        container.append(leftcolumn);
                        container.append(rightcolumn);
    
                        var photo = $("<div class='jqx-rc-all' style='margin: 10px;'><b>Photo:</b></div>");
                        var image = $("<div style='margin-top: 10px;'></div>");
                        var imgurl = '../../images/' + datarecord.firstname.toLowerCase() + '.png';
                        var img = $('<img height="60" src="' + imgurl + '" />');
                        image.append(img);
                        image.appendTo(photo);
                        photocolumn.append(photo);
    
                        var firstname = "<div style='margin: 10px;'><b>First Name:</b> " + datarecord.firstname + "</div>";
                        var lastname = "<div style='margin: 10px;'><b>Last Name:</b> " + datarecord.lastname + "</div>";
                        var title = "<div style='margin: 10px;'><b>Title:</b> " + datarecord.title + "</div>";
                        var address = "<div style='margin: 10px;'><b>Address:</b> " + datarecord.address + "</div>";
                        $(leftcolumn).append(firstname);
                        $(leftcolumn).append(lastname);
                        $(leftcolumn).append(title);
                        $(leftcolumn).append(address);
    
                        var postalcode = "<div style='margin: 10px;'><b>Postal Code:</b> " + datarecord.postalcode + "</div>";
                        var city = "<div style='margin: 10px;'><b>City:</b> " + datarecord.city + "</div>";
                        var phone = "<div style='margin: 10px;'><b>Phone:</b> " + datarecord.homephone + "</div>";
                        var hiredate = "<div style='margin: 10px;'><b>Hire Date:</b> " + datarecord.hiredate + "</div>";
    
                        $(rightcolumn).append(postalcode);
                        $(rightcolumn).append(city);
                        $(rightcolumn).append(phone);
                        $(rightcolumn).append(hiredate);
    
                        var notescontainer = $('<div style="white-space: normal; margin: 5px;"><span>' + datarecord.notes + '</span></div>');
                        $(notes).append(notescontainer);
                        $(tabsdiv).jqxTabs({ width: 600, height: 170 });
                    }
                }
                var dataAdapter = new $.jqx.dataAdapter(source);
    
                $("#jqxgrid").jqxGrid(
                {
                    width: 670,
                    height: 250,
                    source: dataAdapter,
                    rowdetails: true,
                    rowdetailstemplate: { rowdetails: "<div style='margin: 10px;'><ul style='margin-left: 30px;'><li class='title'><li>Notes</li><div class='information'></div><div class='notes'></div></div>", rowdetailsheight: 200 },
                    //rowdetailshidden: false,
                    initrowdetails: initrowdetails,
                    columns: [
                          { text: 'First Name', datafield: 'firstname', width: 100 },
                          { text: 'Last Name', datafield: 'lastname', width: 100 },
                          { text: 'Title', datafield: 'title', width: 180 },
                          { text: 'City', datafield: 'city', width: 100 },
                          { text: 'Country', datafield: 'country', width: 140 }
                    ]
                });
            };
        </script>
    </head>
    <body class='default'>
        <div id='jqxWidget' style="font-size: 13px; font-family: Verdana; float: left;">
            <div id="jqxgrid"></div>
        </div>
        <input type="button" id="btnReBind" value="重新绑定" onclick="RebindDetails()" />
    </body>
    </html>

    xililiulx
    Participant

    I just use the supported demo do the test(it show the same issue as in my project).

    Anyone help?

    Jqwidges version is 3.2.1.

    Thanks!


    Peter Stoev
    Keymaster

    Hi xililiulx,

    Unfortunately, We do not understand your question and also the posted code. If you provide a sample which illustrates your scenario in http://jsfiddle.net/, then we will test it.

    Best Regards,
    Peter Stoev

    jQWidgets Team
    http://www.jqwidgets.com


    xililiulx
    Participant

    Hi Keymaster,

    I’m sorry, I try to describe it more detail.
    In my project, I need show row detail information in grid. I set the setting like the demo your support, it works very well. But when I need rebind data to this grid in the same webpage , I also use the same setting as the first which works very well. Issues come as following:
    a) sometimes row details all automatically expand after rebind.
    b) sometimes row details all collapsed well, but when click the the column to expand current row, not current row expands but all others rows expand.

    I hope you can understand what I say.

    Thanks


    Peter Stoev
    Keymaster

    Hi xililiulx,

    Ok, please share a sample in http://jsfiddle.net/, so then we would be able to test your scenario.

    Best Regards,
    Peter Stoev

    jQWidgets Team
    http://www.jqwidgets.com


    xililiulx
    Participant

    Hi Keymaster,
    The link is http://jsfiddle.net/cGkSs. It seems not work in the the link you provide but works with the issue in IE.

    Thanks!

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

You must be logged in to reply to this topic.