首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Dgrid +选择问题

Dgrid +选择问题
EN

Stack Overflow用户
提问于 2015-10-27 22:51:50
回答 1查看 906关注 0票数 0

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

我的网页包含一个当你点击一个按钮时打开的对话框。在此对话框中,我们有以下代码,这些代码通过Json HTTP页面显示包含来自数据库的数据的网格。这可以很好地工作,甚至排序和查询过滤。

我想要做的是允许用户双击一行,获得第一列中包含的选定行Id,以更新主页中的表单。为此,我使用了dgrid/selection。但是,它总是返回网格的最后一行,而不是用户选择的那一行。

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

有什么想法吗?

谢谢

代码语言:javascript
复制
      <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>
EN

回答 1

Stack Overflow用户

发布于 2015-10-28 14:38:10

只是找到了原因。这些列需要有一个名为ID的'id‘列,我只需将'contact_id’列改为'id‘,它就能正常工作。

谢谢

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33371185

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档