FineUI 官方论坛

标题: 点击菜单树生成的tab,无法触发OnTabIndexChanged事件,为什么? [打印本页]

作者: ramble5956    时间: 2019-7-7 14:20
标题: 点击菜单树生成的tab,无法触发OnTabIndexChanged事件,为什么?
本帖最后由 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);
        }

谢谢!

作者: sanshi    时间: 2019-7-8 09:59
在 JS 端动态添加的选项卡不会触发 OnTabIndexChanged 事件,因为 JS 端创建的选项卡后台并不知情,即使触发后台也无法获取相关数据。

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

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

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

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

作者: ramble5956    时间: 2019-7-12 12:08
sanshi 发表于 2019-7-11 11:10
JS端注册事件类似这样:

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

谢谢,我研究研究下看;
作者: ramble5956    时间: 2019-7-14 09:34
请教下面的代码是不是有什么问题,没有反应。谢谢!

        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>






作者: sanshi    时间: 2019-7-18 12:48
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端就出错了,根本就没有回发
作者: ramble5956    时间: 2019-8-10 16:46
sanshi 发表于 2019-7-18 12:48
F12,调试下你就知道了

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


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

请基于空项目重现问题,并上传




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