FineUI 官方论坛

标题: Tab切换时 执行了两次OnTabIndexChanged事件 是怎么回事 [打印本页]

作者: 好好fineui    时间: 2013-8-23 09:33
标题: Tab切换时 执行了两次OnTabIndexChanged事件 是怎么回事
每个tab下面方面的是Grid
用vs调试时发现 每次切换选项卡时 都执行了两次OnTabIndexChanged事件 是什么原因

作者: sanshi    时间: 2013-8-23 10:05
我刚刚测试了在线示例:http://fineui.com/demo/#/demo/tabstrip/tabstrip_autopostback.aspx

没有发现你说的情况?
作者: sivanwong    时间: 2013-8-23 10:56
同测 没有这个问题
作者: 好好fineui    时间: 2013-8-23 11:12
sanshi 发表于 2013-8-23 10:05
我刚刚测试了在线示例:http://fineui.com/demo/#/demo/tabstrip/tabstrip_autopostback.aspx

没有发现你 ...

使用下载下来的FineUI3.3.1源码 用VS设断点调试时 确实发现的是执行两次
sanshi你用vs设断点调试下tabstrip_autopostback.aspx这个看
作者: 好好fineui    时间: 2013-8-23 11:12
sivanwong 发表于 2013-8-23 10:56
同测 没有这个问题

你设断点调试过吗??
作者: sanshi    时间: 2013-8-23 11:42
好好fineui 发表于 2013-8-23 11:12
使用下载下来的FineUI3.3.1源码 用VS设断点调试时 确实发现的是执行两次
sanshi你用vs设断点调试下tabst ...

不用设置断点,IE的话用F12看网络请求,每次切换TAB只有一次请求的
作者: 好好fineui    时间: 2013-8-23 13:03
sanshi 发表于 2013-8-23 11:42
不用设置断点,IE的话用F12看网络请求,每次切换TAB只有一次请求的

设置断点调试 有两次执行
作者: sivanwong    时间: 2013-8-23 13:12
好好fineui 发表于 2013-8-23 11:12
你设断点调试过吗??

调过,没有你说的这个问题 用的是这个 http://fineui.com/demo/#/demo/tabstrip/tabstrip_autopostback.aspx
作者: 好好fineui    时间: 2013-8-23 14:24
sivanwong 发表于 2013-8-23 13:12
调过,没有你说的这个问题 用的是这个 http://fineui.com/demo/#/demo/tabstrip/tabstrip_autopostback.a ...

你看下我的调试截图  如果说只执行一次的话 我代码里的aa 都是每次只加1 但是事实是每次都加2 说明执行了两次[attach]2975[/attach]

[attach]2976[/attach]


[attach]2977[/attach]


[attach]2978[/attach]



作者: 好好fineui    时间: 2013-8-23 14:24
本帖最后由 好好fineui 于 2013-8-23 14:26 编辑
sanshi 发表于 2013-8-23 11:42
不用设置断点,IE的话用F12看网络请求,每次切换TAB只有一次请求的

你看下我的调试截图  如果说只执行一次的话 我代码里的aa 都是每次只加1 但是事实是每次都加2 说明执行了两次












作者: sanshi    时间: 2013-8-23 14:49
好好fineui 发表于 2013-8-23 14:24
你看下我的调试截图  如果说只执行一次的话 我代码里的aa 都是每次只加1 但是事实是每次都加2 说明执行了 ...

贴一下你的完整代码,还有你的FineUI版本是?
作者: sivanwong    时间: 2013-8-23 15:04
好好fineui 发表于 2013-8-23 14:24
你看下我的调试截图  如果说只执行一次的话 我代码里的aa 都是每次只加1 但是事实是每次都加2 说明执行了 ...

按 sanshi 说的  把代码贴出来 全一点
作者: 好好fineui    时间: 2013-8-23 15:12
本帖最后由 好好fineui 于 2013-8-23 15:15 编辑
sanshi 发表于 2013-8-23 14:49
贴一下你的完整代码,还有你的FineUI版本是?

FineUI版本最新的3.3.1.1 我这个代码就是在示例代码tabstrip_autopostback.aspx的基础上测试的,就简单的在前台加了个label控件,后台定义了个变量


前台代码:
  1. <form id="form1" runat="server">
  2.     <x:PageManager ID="PageManager1" runat="server" />
  3.     <x:TabStrip ID="TabStrip1" Width="750px" Height="300px" AutoPostBack="true" OnTabIndexChanged="TabStrip1_TabIndexChanged"
  4.         ShowBorder="true" ActiveTabIndex="1" runat="server">
  5.         <Tabs>
  6.             <x:Tab Title="标签一" EnableBackgroundColor="true" BodyPadding="5px"
  7.                 Layout="Fit" runat="server">
  8.                 <Items>
  9.                     <x:SimpleForm ID="SimpleForm1" ShowBorder="false" EnableBackgroundColor="true"
  10.                         ShowHeader="false" Title="SimpleForm1" runat="server">
  11.                         <Items>
  12.                             <x:Label ID="Label1" CssClass="highlight" Label="文本" Text="sanshi" runat="server" />
  13.                             <x:NumberBox ID="NumberBox1" Label="数字输入框" Required="true" ShowRedStar="true"
  14.                                 runat="server" />
  15.                             <x:TextBox ID="TextBox1" Label="文本框" runat="server" Required="True" ShowRedStar="true">
  16.                             </x:TextBox>
  17.                             <x:DatePicker ID="DatePicker1" runat="server" SelectedDate="2008-05-09" Label="日期选择器"
  18.                                 Text="2008-05-09" Required="true" ShowRedStar="true">
  19.                             </x:DatePicker>
  20.                             <x:TextArea ID="TextArea2" Label="多行文本框" runat="server" Required="True" ShowRedStar="true" />
  21.                         </Items>
  22.                     </x:SimpleForm>
  23.                 </Items>
  24.             </x:Tab>
  25.             <x:Tab Title="标签二" BodyPadding="5px" EnableBackgroundColor="true" runat="server">
  26.                 <Items>
  27.                     <x:Label ID="Label2" CssClass="highlight" Text="sanshi" runat="server" />
  28.                 </Items>
  29.             </x:Tab>
  30.             <x:Tab Title="标签三" BodyPadding="5px" EnableBackgroundColor="true"
  31.                 runat="server">
  32.                 <Items>
  33.                     <x:Label ID="Label3" CssClass="highlight" Text="sanshi" runat="server" />
  34.                 </Items>
  35.             </x:Tab>
  36.         </Tabs>
  37.     </x:TabStrip>
  38.     <br />
  39.     <x:Button ID="Button2" CssStyle="margin-right:5px;float:left;" ValidateForms="SimpleForm1"
  40.         Text="验证第一个标签中的表单" runat="server">
  41.     </x:Button>
  42.     <x:Button ID="Button3" Text="选中下一个标签" OnClick="Button3_Click" runat="server">
  43.     </x:Button>
  44.     <x:Label ID="Label4" runat="server" Text=""></x:Label>
  45.     </form>
复制代码
后台代码:
  1. protected void Page_Load(object sender, EventArgs e)
  2.         {
  3.             if (!IsPostBack)
  4.             {
  5.                 aa = 0;
  6.             }
  7.         }


  8.         protected void Button3_Click(object sender, EventArgs e)
  9.         {
  10.             int nextIndex = TabStrip1.ActiveTabIndex + 1;

  11.             if (nextIndex >= TabStrip1.Tabs.Count)
  12.             {
  13.                 nextIndex = 0;
  14.             }

  15.             TabStrip1.ActiveTabIndex = nextIndex;
  16.         }

  17.         private int aa
  18.         {
  19.             get { return (int)ViewState["aa"]; }
  20.             set { ViewState["aa"] = value; }
  21.         }
  22.         protected void TabStrip1_TabIndexChanged(object sender, EventArgs e)
  23.         {
  24.             aa++;
  25.             Label4.Text = "执行了" + aa + " 次";
  26.             if (TabStrip1.ActiveTabIndex == 0)
  27.             {
  28.                 Label1.Text = "标签回发时间:" + DateTime.Now.ToLongTimeString();
  29.             }
  30.             else if (TabStrip1.ActiveTabIndex == 1)
  31.             {
  32.                 Label2.Text = "标签回发时间:" + DateTime.Now.ToLongTimeString();
  33.             }
  34.             else if (TabStrip1.ActiveTabIndex == 2)
  35.             {
  36.                 Label3.Text = "标签回发时间:" + DateTime.Now.ToLongTimeString();
  37.             }
  38.         }
复制代码

作者: sanshi    时间: 2013-8-23 15:27
好好fineui 发表于 2013-8-23 15:12
FineUI版本最新的3.3.1.1 我这个代码就是在示例代码tabstrip_autopostback.aspx的基础上测试的,就简单的 ...

已经确认是个BUG。

手工点击Tab切换时,只会触发TabIndexChanged事件一次;
点击”选中下一个标签“时,会触发TabIndexChanged事件两次

多谢指出,下个版本会修正




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