FineUI 官方论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

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

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

搜索
查看: 5559|回复: 6
打印 上一主题 下一主题

【已确认】V6中Grid绑定数据源后的FState验证出错

[复制链接]
跳转到指定楼层
楼主
发表于 2016-10-24 18:12:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
反馈BUG
程序版本: V6.0.0.0
浏览器: Chrome 
BUG截图:
BUG地址: http://pan.baidu.com/s/1kVx021L
弹出框中两个Grid,数据源均来自数据库查询的dataset。第一个Grid的OnRowClick事件,在后台为第二个加载数据。第二个grid的OnRowClick事件,在后台处理数据,关闭当前windows,返回数据。 当第二个Grid的数据源是直接从数据库中查出来的DataSet时,点击页面任何操作往后台发送数据时,报上面的FState校验错误。而重新new一个DataTable,再把数据一行行复制过来,绑定到Grid2时,点击页面任何操作往后台发送数据时就不报错了。如图:





代码:
protected void GridBrand_RowClick(object sender, FineUI.GridRowClickEventArgs e)
        {
            object[] keys = GridBrand.DataKeys[e.RowIndex];
            BLL.Car.CarSerial bll = new BLL.Car.CarSerial();
            DataSet ds = bll.SerialList(keys[0].ToString());

            ////直接绑定会FState失效
            //GridSerial.DataSource = ds.Tables[0];
            //GridSerial.DataBind();

            ////Copy一个也不行
            //DataTable newTab2 = ds.Tables[0].Copy();
            //GridSerial.DataSource = newTab2;
            //GridSerial.DataBind();

            ////new一个才好用
            DataTable newTab = new DataTable();
            newTab.Columns.Add("Id");
            newTab.Columns.Add("SerialName");
            newTab.Columns.Add("minPrice");

            foreach(DataRow dr in ds.Tables[0].Rows)
            {
                DataRow newRow = newTab.NewRow();
                newRow["Id"] = dr["Id"];
                newRow["SerialName"] = dr["SerialName"];
                newRow["minPrice"] = dr["minPrice"];
                newTab.Rows.Add(newRow);
            }
            GridSerial.DataSource = newTab;
            GridSerial.DataBind();

        }



grid:
<fanel ID="anel1" runat="server" ShowBorder="false"  EnableCollapse="false"
                    Layout="HBox" BoxConfigAlign="Stretch" BoxConfigPosition="Start" BoxFlex="1"
                    BoxConfigChildMargin="0 0 0 0" BodyPadding="0" ShowHeader="false"
                    Title="">
                    <Items>
                        <fanel ID="anel3" Title="面板1" BoxFlex="1" runat="server" Layout="Fit"
                            BodyPadding="0" ShowBorder="false" ShowHeader="false" Margin="0 5 0 0">
                            <Items>
                                <f:Grid ID="GridBrand" Title="品牌"  EnableCollapse="false" ShowBorder="true" ShowHeader="true"
                                        runat="server" EnableCheckBoxSelect="false" DataKeyNames="Id"
                                        EnableMultiSelect="false" EnableRowClickEvent="true">
                                        <Columns>
                                            <f:BoundField ExpandUnusedSpace="true" DataField="brand" DataFormatString="{0}" HeaderText="品牌" TextAlign="Center" />
                                        </Columns>
                                    </f:Grid>
                            </Items>
                        </fanel>
                        <fanel ID="anel4" Title="面板2" BoxFlex="2" Layout="Fit"
                            runat="server" BodyPadding="0" ShowBorder="false" ShowHeader="false">
                            <Items>
                                <f:Grid ID="GridSerial" Title="车系"  EnableCollapse="false" ShowBorder="true" ShowHeader="true"
                                        runat="server" EnableCheckBoxSelect="false" DataKeyNames="Id,SerialName,minPrice"
                                        EnableMultiSelect="false" EnableRowClickEvent="true">
                                        <Columns>
                                            <f:BoundField ExpandUnusedSpace="true" DataField="Comany" DataFormatString="{0}" HeaderText="厂家" TextAlign="Center" />
                                            <f:BoundField ExpandUnusedSpace="true" DataField="SerialName" DataFormatString="{0}" HeaderText="车系" TextAlign="Center" />
                                            <f:BoundField Width="100px" DataField="minPrice" DataFormatString="{0:f2}" HeaderText="最低价(万元)" TextAlign="Center" />
                                        </Columns>
                                    </f:Grid>
                            </Items>
                        </fanel>
                    </Items>
                </fanel>

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
沙发
发表于 2016-10-25 09:15:38 | 只看该作者
这个目前可以解决的方案是将PageManager 中的EnableFStateValidation=false能解决,但是估计还要等三石来处理
板凳
 楼主| 发表于 2016-10-25 09:38:12 | 只看该作者
bdd 发表于 2016-10-25 09:15
这个目前可以解决的方案是将PageManager 中的EnableFStateValidation=false能解决,但是估计还要等三石来处 ...

嗯,如果需要验证的话,就只能是吧数据再new一个datatable重新导一遍了。
地板
发表于 2016-10-25 09:51:20 | 只看该作者
请基于空项目重现问题,并上传。这样没法调试解决
5#
 楼主| 发表于 2016-10-25 10:34:32 | 只看该作者
sanshi ,项目上传到云盘了,链接在bug地址那儿。空项目太大,我附件传不上去。
下载地址:http://pan.baidu.com/s/1kVx021L
6#
发表于 2016-10-26 11:21:36 | 只看该作者

怎么回事,我也有这个问题

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
7#
发表于 2016-10-31 22:27:55 | 只看该作者
Fire 发表于 2016-10-25 10:34
sanshi ,项目上传到云盘了,链接在bug地址那儿。空项目太大,我附件传不上去。
下载地址:http://pan.baid ...

多谢。有可重现的项目,就好解决问题了。

这是一个BUG,下个版本会修正(FineUI v6.0.1):
-----
+修正DataKeyNames值是小数(比如9.80),则页面回发时会出现F_STATE验证出错的问题(Fire-8910)。
                -JavaScript会自动忽略小数的最后零(比如2.0,9.80),导致服务器生成的数据和回发的数据不一致。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-4-20 07:27 , Processed in 0.053264 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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