FineUI 官方论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

本论坛已关闭(禁止注册、发帖和回复)
请移步 三石和他的朋友们

FineUI首页 WebForms - MVC & Core - JavaScript 常见问题 - QQ群 - 十周年征文活动

FineUI(开源版) 下载源代码 - 下载空项目 - 获取ExtJS - 文档 在线示例 - 版本更新 - 捐赠作者 - 教程

升级到 ASP.NET Core 3.1,快、快、快! 全新ASP.NET Core,比WebForms还简单! 欢迎加入【三石和他的朋友们】(基础版下载)

搜索
查看: 3569|回复: 5
打印 上一主题 下一主题

GRID 表格中回车如何才能横向移动单元格?

[复制链接]
跳转到指定楼层
楼主
发表于 2013-8-18 11:09:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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>

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

沙发
发表于 2013-8-18 12:40:24 | 只看该作者

回帖奖励 +3 金钱

extjs 默认支持 可编辑表格 的 Tab 键,不支持回车键
板凳
 楼主| 发表于 2014-4-5 23:13:53 | 只看该作者
只能用模板列?
,望高手指点下?应如何做
地板
发表于 2014-4-5 23:51:02 | 只看该作者
本帖最后由 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>
复制代码


5#
 楼主| 发表于 2014-4-6 00:10:03 | 只看该作者
太好了!谢谢!
6#
发表于 2014-4-16 14:38:47 | 只看该作者
gdcrx 发表于 2014-4-5 23:51
下面代码测试可行,再贴一次,呵呵。。。

记号,学习
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|FineUI 官方论坛 ( 皖ICP备2021006167号-1 )

GMT+8, 2024-10-28 14:25 , Processed in 0.046110 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表