Dgrid +选择问题

时间:2015-10-27 14:51:50

标签: dgrid

仍然尝试使用Dgrid(0.4)和dojo(1.10),我现在有另一个选择问题。

我的网页包含单击按钮时打开的对话框。 在此对话框中,我们有以下代码,它显示一个网格,其中包含来自数据库的数据,通过Json HTTP页面。这工作正常,甚至是排序和查询过滤。

我想知道的是允许用户双击一行,获取第一列中包含的所选行Id以更新主页面中的表单。我使用dgrid / selection来做到这一点。但是,它始终返回网格的最后一行而不是用户选择的那一行。

选择代码基于:   http://dgrid.io/tutorials/0.4/hello_dgrid/

有什么想法吗?

谢谢

      <script language="javascript">  

        require
        (
            [
                "dojo/_base/declare", 
                "dojo/_base/array", 
                "dgrid/OnDemandList",
                "dgrid/OnDemandGrid",
                "dgrid/Keyboard",
                "dgrid/Selection",
                "dgrid/Editor", 
                "dgrid/extensions/ColumnHider",
                "dstore/Memory",
                "dstore/RequestMemory",
                "dojo/_base/lang",
                "dojo/dom-construct",
                "dojo/dom",
                "dojo/on",
                "dojo/when",
                "dojo/query",
                "dojo/store/Observable",
                "dstore/Rest",
                "dojo/_base/Deferred",
                "dojo/store/Cache",
                "dojo/domReady!",
            ], 
            function(
                declare, arrayUtil,  OnDemandList, OnDemandGrid, Keyboard, Selection, Editor, ColumnHider, Memory, RequestMemory, lang, ObjectStore, dom, on, when, query, Observable, Rest, Deferred
            ){
                var fform = dom.byId("filterForm");
                var ContactColumns = [
                        { label: "", field: "contact_id", hidden: true,  unhidable: true},
                        { label: "Company Name", field: "company_name", unhidable: true },
                        { label: "Contact Name", field: "contact_name", unhidable: true },
                        { label: "Email", field: "contact_email", unhidable: true }
                ];

                var ContactGrid=declare([OnDemandGrid, Keyboard, Selection,ColumnHider]);

                var contactlist = new Observable(new Rest({ target: './ajax.contactsLoader.php' }));
                var selection = [];

                window.contactgrid = new ContactGrid(
                    {
                        className: "dgrid-selectors",
                        collection: contactlist,
                        maxRowsPerPage:10,
                        selectionMode: 'single',
                        cellNavigation: false,
                        columns: ContactColumns
                    }, "contacttable"
                );

                on(fform, "submit", function (event) {
                        var cpy_filter = fform.elements.fcompany_name.value;
                        var ct_filter = fform.elements.fcontact_name.value;
                        var email_filter = fform.elements.fcontact_email.value;                                             
                    contactgrid.set('collection',contactlist.filter({contact_name: ct_filter, company_name: cpy_filter, contact_email: email_filter }));
                       contactgrid.refresh();
                        event.preventDefault();
                });

            contactgrid.on('dgrid-select', function (event) {
                // Report the item from the selected row to the console.
                console.log('Row selected: ', event.rows[0].data);
            });
            contactgrid.on('dgrid-deselect', function (event) {
                console.log('Row de-selected: ', event.rows[0].data);
            });
            contactgrid.on('.dgrid-row:click', function (event) {
                var row = contactgrid.row(event);
                console.log('Row clicked:', row.data);
            });


            }    
        );
       </script>             

 <div class="dijitDialogPaneContentArea" style="width:96%;margin-left:5px">
    <form id="filterForm">        
      <div class="dijitDialogPaneActionBar" >
    <button           data-dojo-type="dijit.form.Button" type="submit">Filter</button>          
        <button
          data-dojo-type="dijit.form.Button"
          data-dojo-attach-point="submitButton"
          type="submit"
        >
          Select
        </button>

        <button
          data-dojo-type="dijit.form.Button"
          data-dojo-attach-point="cancelButton"
        >
          Close
        </button>

      </div>


        <div data-dojo-attach-point="contentNode" >
        <input type="text" data-dojo-type="dijit.form.TextBox" name="fcompany_name" id="fcompany_name" style="width:33%">
        <input type="text" data-dojo-type="dijit.form.TextBox" name="fcontact_name" id="fcontact_name" style="width:32%">
        <input type="text" data-dojo-type="dijit.form.TextBox"  name="fcontact_email" id="fcontact_email" style="width:33%">

        <div id="contacttable">
        </div>
        </div>

    </form>
</div>

1 个答案:

答案 0 :(得分:0)

刚刚找到原因。 列需要有一个名为ID的“id”列。我只是将'contact_id'列更改为'id',它可以正常工作。

感谢