FineUI 官方论坛

标题: 【已确认】AutoPostBack 的Bug [打印本页]

作者: purplebolt    时间: 2013-12-13 13:11
标题: 【已确认】AutoPostBack 的Bug
这个不知道是不是Bug,还是我设置有问题
我在程序页面上面查询区域放置了2个控件,2个控件都启用了 AutoPostBack
后面发现,其中一个控件触发事件时,另一个控件也会触发事件
页面下方的Grid控件,如果开启Row选择事件,也会触发上面控件的事件。也有可能事件类型都是 EventArgs
下面是页面查询部分代码
            <x:Form ID="Form2" runat="server" Height="36px" BodyPadding="5px" ShowHeader="false"
                ShowBorder="false" LabelAlign="Right" EnableBackgroundColor="true">
                <Rows>
                    <x:FormRow ID="FormRow1" runat="server">
                        <Items>
                            <x:TwinTriggerBox runat="server" EmptyText="输入要搜索的用工单位" Label="单位名称" ID="txtQUnitName"
                                ShowTrigger1="false" OnTrigger2Click="btnQuery_Click" Trigger1Icon="Clear" Trigger2Icon="Search" />
                            <xropDownList ID="cboQRealDate" runat="server" Required="true" ShowRedStar="true"
                                Label="自然月份" AutoPostBack="true" OnSelectedIndexChanged="cboQRealDate_SelectedIndexChanged" />
                            <x:RadioButtonList ID="rboIsWork" Label="状态" runat="server" AutoPostBack="true"
                                OnSelectedIndexChanged="rboIsWork_SelectedIndexChanged" Width="200px">
                                <x:RadioItem Text="当月新增" Value="0" Selected="true" />
                                <x:RadioItem Text="当月减员" Value="1" />
                            </x:RadioButtonList>
                        </Items>
                    </x:FormRow>
                </Rows>
            </x:Form>



作者: luyj56    时间: 2013-12-19 11:52
是有这样的问题,当一页面有多个AutoPostBack的时候,事件没有去判断这个AutoPostBack是不是属于他的。
可以在每个事件里加个判断:
string streven = Request.Form["__EVENTTARGET"];
if (streven == "某个事件回发回来的")  //这里的值可以通过先Alert.Show(streven); 出来
   {
}

作者: purplebolt    时间: 2013-12-26 13:33
收到,谢谢解答,这就去试试
作者: purplebolt    时间: 2013-12-26 15:29
最后修改了FineUI 源程序的OnSelectedIndexChanged事件,问题解决,不知道有没有后遗症,代码如下
        /// <summary>
        /// 触发选中项改变事件
        /// </summary>
        /// <param name="e">事件参数</param>
        protected virtual void OnSelectedIndexChanged(EventArgs e)
        {
            EventHandler handler = Events[_handlerKey] as EventHandler;
            if (handler == null)
            {
                return;
            }

            //增加回发事件检测
            if (this.AutoPostBack && this.UniqueID != Context.Request.Form["__EVENTTARGET"])
            {
                return;
            }

            handler(this, e);
        }  
作者: sanshi    时间: 2014-1-11 16:24
已确认,会在  v4.0beta3 中修正。更新至:http://fineui.com/bbs/forum.php?mod=viewthread&tid=4171

@purplebolt,你这个修正不对,页面回发时会检查每个控件的数据是否改变,而无论本次回发是否当前控件触发的。
作者: purplebolt    时间: 2014-1-13 12:35
老大真勤奋,期待新版{:soso_e113:}




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