FineUI 官方论坛

标题: GRID 表格中回车如何才能横向移动单元格? [打印本页]

作者: erp8@live.cn    时间: 2013-8-18 11:09
标题: GRID 表格中回车如何才能横向移动单元格?
本帖最后由 erp8@live.cn 于 2014-4-5 23:00 编辑

<x:RenderField ColumnID="Name" DataField="Name" FieldType="String" HeaderText="名称">
                                             <Editor>
                                                 <x:TextBox ID="TextBox1" Required="true" runat="server">
                                                 </x:TextBox>
                                             </Editor>
                                         </x:RenderField>

---以上为单元格定义!
可编辑表格回车换单元格(回车后横向移动到下一单元格,现在回车后在原地不动)
<script type="text/javascript">
        var gridClientID = '<%= Grid1.ClientID %>';



        function registerEnterEvent() {
            var grid = X(gridClientID);
            /*
            if (grid.el.getAttribute('data-event-keydown-registered')) {
            return;
            }
            grid.el.set({ 'data-event-keydown-registered': true });
            */

            grid.el.on("keydown", function (evt, el) {
                if (evt.getKey() == evt.ENTER) {
                    var nextRow = Ext.get(el).parent('.x-grid3-row').next();
                    if (nextRow) {
                        nextRow.query('.x-grid-tpl input')[0].select();
                    }
                }
            }, { delegate: '.x-grid-tpl input' });
        }

        function onReady() {
            var grid = X(gridClientID);

            grid.on('viewready', function () {
                registerEnterEvent();
            });
        }

    </script>

-----用这个方法不行啊?
高手指点?


作者: sanshi    时间: 2013-8-18 12:40
extjs 默认支持 可编辑表格 的 Tab 键,不支持回车键
作者: erp8@live.cn    时间: 2014-4-5 23:13
只能用模板列?
,望高手指点下?应如何做
作者: gdcrx    时间: 2014-4-5 23:51
本帖最后由 gdcrx 于 2014-4-15 12:38 编辑

下面代码测试可行,再贴一次,呵呵。。。

  1. <script type="text/javascript">

  2.         var Tools = new Object();
  3.         Tools.isNumber = function (B) {
  4.             var A = /^[\d|\.|,]+$/;
  5.             return A.test(B)
  6.         };

  7.         var gridClientID = '<%= gdData.ClientID %>';
  8.         var inputselector = '.x-grid-tpl input';

  9.         function registerAutoSaveEvent() {
  10.             var grid = F(gridClientID);

  11.             $(grid.el.dom).delegate(inputselector, 'keyup', function (evt) {
  12.                 var $this = $(this);
  13.                 if (evt.which == 13)
  14.                 {
  15.                     var inputs = $(this).parents("form").eq(0).find(":input");
  16.                     var idx = inputs.index(this);

  17.                     if (idx == inputs.length - 1) {
  18.                         inputs[0].select()
  19.                     } else {
  20.                         inputs[idx + 1].focus();
  21.                         inputs[idx + 1].select();
  22.                     }
  23.                     return false;
  24.                 }
  25.                 else
  26.                 {
  27.                      window.setTimeout(function () {

  28.                         var row = $this.parents('.x-grid-row');
  29.                         var num1 = row.find(inputselector + '.Price').val();
  30.                         var num2 = row.find(inputselector + '.Quantity').val();
  31.                     
  32.                         if ( num2.length > 0 && (!Tools.isNumber(num2) || isNaN(num2))) {
  33.                             alert("请输入正确的数量");
  34.                             // 不能录入非数据
  35.                         }

  36.                         var resultNode = row.find('.x-grid-tpl span.Total');
  37.                         var total = parseFloat(num1) * parseFloat(num2);
  38.                         if (isNaN(total))
  39.                         {
  40.                             total = 0;
  41.                         }
  42.                         resultNode.text(total.toFixed(2));

  43.                         var rowIndex = row.index();
  44.                         var rowIndex = row.index();
  45.                         __doPostBack('', 'AutoSave

  46. + rowIndex);
  47.                      }, 300);
  48.                 }
  49.             });

  50.         }

  51.      
  52.         // 页面第一次加载完成后调用的函数
  53.         F.ready(function () {
  54.             registerAutoSaveEvent();
  55.         });



  56.     </script>
复制代码



作者: erp8@live.cn    时间: 2014-4-6 00:10
太好了!谢谢!
作者: 隨風往事    时间: 2014-4-16 14:38
gdcrx 发表于 2014-4-5 23:51
下面代码测试可行,再贴一次,呵呵。。。

记号,学习




欢迎光临 FineUI 官方论坛 (https://fineui.com/bbs/) Powered by Discuz! X3.4