FineUI 官方论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

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

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

搜索
查看: 5412|回复: 8
打印 上一主题 下一主题

点击菜单树生成的tab,无法触发OnTabIndexChanged事件,为什么?

[复制链接]
跳转到指定楼层
楼主
发表于 2019-7-7 14:20:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 ramble5956 于 2019-7-7 14:22 编辑

请教大侠,我想获取当前活动tab的ID,但是点击菜单树中的节点生成的tab,无法触发OnTabIndexChanged事件, 请问为什么?
如果是缺省的tab是可以的,比如首页!
代码如下,点击首页是可以触发的
        protected void mainTabStrip_TabIndexChanged(object sender, EventArgs e)
        {
            var activeTab = mainTabStrip.ActiveTabIndex;
            int TabIndex = mainTabStrip.ActiveTabIndex;

            if (mainTabStrip.ActiveTabIndex == 0)
                Alert.Show(mainTabStrip.ActiveTabIndex.ToString(), MessageBoxIcon.Warning);
            else if (mainTabStrip.ActiveTabIndex == 1)
                Alert.Show(mainTabStrip.ActiveTabIndex.ToString(), MessageBoxIcon.Warning);
            else if (mainTabStrip.ActiveTabIndex == 2)
                Alert.Show(mainTabStrip.ActiveTabIndex.ToString(), MessageBoxIcon.Warning);
        }

谢谢!
沙发
发表于 2019-7-8 09:59:29 | 只看该作者
在 JS 端动态添加的选项卡不会触发 OnTabIndexChanged 事件,因为 JS 端创建的选项卡后台并不知情,即使触发后台也无法获取相关数据。

类似的需要,可以通过JS端注册 https://fineui.com/js/api/F.TabStrip.html#event:tabchange 事件,然后发起自定义回发:https://pro.fineui.com/#/other/custom_postback.aspx
板凳
 楼主| 发表于 2019-7-10 10:03:34 | 只看该作者
sanshi 发表于 2019-7-8 09:59
在 JS 端动态添加的选项卡不会触发 OnTabIndexChanged 事件,因为 JS 端创建的选项卡后台并不知情,即使触 ...

谢谢,具体可以怎么做,请问有类似代码示例么,刚接触,麻烦三石兄了。
地板
发表于 2019-7-11 11:10:47 | 只看该作者
ramble5956 发表于 2019-7-10 10:03
谢谢,具体可以怎么做,请问有类似代码示例么,刚接触,麻烦三石兄了。 ...

JS端注册事件类似这样:
  1. F('TabStrip1').on('tabchange', function() {  })
复制代码

你可以在官网示例源代码中搜索: .on(   有一些使用自定义事件的例子
5#
 楼主| 发表于 2019-7-12 12:08:04 | 只看该作者
sanshi 发表于 2019-7-11 11:10
JS端注册事件类似这样:

你可以在官网示例源代码中搜索: .on(   有一些使用自定义事件的例子

谢谢,我研究研究下看;
6#
 楼主| 发表于 2019-7-14 09:34:29 | 只看该作者
请教下面的代码是不是有什么问题,没有反应。谢谢!

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                litVersion.Text = FineUI.GlobalConfig.ProductVersion;
                //btnProject_Click(null, new EventArgs());
            }
            else
            {
                if (GetRequestEventArgument() == "tab_changed")
                {
                    Alert.Show("你好 FineUI!你点击了tab", MessageBoxIcon.Warning);
                }
            }
        }




    <script type="text/javascript">
        var menuClientID = '<%= MyTree.ClientID %>';
        var tabStripClientID = '<%= mainTabStrip.ClientID %>';
        // 页面控件初始化完毕后,会调用用户自定义的onReady函数
        F.ready(function () {
            var treeMenu = F(menuClientID);
            var mainTabStrip = F(tabStripClientID);

            F.initTreeTabStrip(treeMenu, mainTabStrip, {
                maxTabCount: 10,
                maxTabMessage: '请先关闭一些选项卡(最多允许打开 10 个)!'
            });

        });

        ///?动态添加的tab,切换时如何获取当前Active tab并刷新按钮选中状态?(或能保持按钮按下状态,不失去焦点?) 20190712
        F('mainTabStrip').on('tabchange', function () {
            if (e.getKey() == e.ENTER) {
                __doPostBack('', 'tab_changed');
            }
        })
    </script>





7#
发表于 2019-7-18 12:48:31 | 只看该作者
ramble5956 发表于 2019-7-14 09:34
请教下面的代码是不是有什么问题,没有反应。谢谢!

        protected void Page_Load(object sender, Ev ...

F12,调试下你就知道了

  1. F('mainTabStrip').on('tabchange', function () {
  2.             if (e.getKey() == e.ENTER) {
  3.                 __doPostBack('', 'tab_changed');
  4.             }
  5.         })
复制代码

这里的 e 参数没有出处,所以JS端就出错了,根本就没有回发
8#
 楼主| 发表于 2019-8-10 16:46:10 | 只看该作者
sanshi 发表于 2019-7-18 12:48
F12,调试下你就知道了

不好意思,三师兄,这个问题还是没解决;代码不知怎么写,敬请给个示例代码,谢谢!   
我想实现的功能是,切换右侧tab时,左侧树节点或按钮不失去焦点,且能切换相应树节点为选中状态;不知获得tabID的方式解决是否正确;


纪念日备注:作为个人的刚开始,经过1个月的学习,发现FineUI Pro真的比开源版强大很多,特于今日加入星球,也感谢三师兄及各位幕后工作者的辛勤劳动。希望多学习兄弟产品,取长补短,看到FineUI产品更好的扩展和升级,比如权限、工作流、报表、在线word等等!
9#
发表于 2019-8-12 10:26:50 | 只看该作者
ramble5956 发表于 2019-8-10 16:46
不好意思,三师兄,这个问题还是没解决;代码不知怎么写,敬请给个示例代码,谢谢!   
我想实现的功能是 ...

请基于空项目重现问题,并上传
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-23 01:23 , Processed in 0.045818 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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