FineUI 官方论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

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

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

搜索
查看: 5668|回复: 7
打印 上一主题 下一主题

【已确认】Grid AfterEdit事件离获取不到修改的单元格值

[复制链接]
跳转到指定楼层
楼主
发表于 2015-10-23 16:17:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
反馈BUG
程序版本: FineUI V4.10
浏览器: Chrome IE10 其它(请在帖子中注明浏览器及版本) 
BUG截图:
BUG地址: -

问题描述,当编辑完“数量”之后,直接点击“进价”,这时候数量的值改变,金额计算完成,这时改变“进价”,再将光标移到“数量”上,“进价”的值无法给变。
//失去焦点(结束编辑)
        protected void Grid1_AfterEdit(object sender, GridAfterEditEventArgs e)
        {
            Dictionary<int, Dictionary<string, object>> modifiedDict = Grid1.GetModifiedDict();
            for (int i = 0, count = table.Rows.Count; i < count; i++)
            {
                if (modifiedDict.ContainsKey(i))
                {
                    Dictionary<string, object> rowDict = modifiedDict;
                    DataRow rowData = table.Rows;
                    if (rowDict.ContainsKey("sl"))//数量
                    {
                        if (rowDict["sl"].ToString() != "")
                        {
                            if (Convert.ToDouble(rowDict["sl"]) >= 0)
                            {
                                rowData["sl"] = -Convert.ToDouble(rowDict["sl"]);
                            }
                            else
                            {
                                rowData["sl"] = rowDict["sl"];
                            }
                        }
                    }
                    if (rowDict.ContainsKey("jj"))//进价
                    {
                        rowData["jj"] = rowDict["jj"];
                    }
                    if (rowDict.ContainsKey("bz"))//备注
                    {
                        rowData["bz"] = rowDict["bz"];
                    }
                }
            }

            double pz = 0; double sl = 0; double je = 0;
            foreach (DataRow dr in table.Rows)
            {
                if (dr["id"].ToString() != table.Compute("max(id)", "").ToString())
                {
                    pz++;
                    if (dr["sl"].ToString() != "")
                    {
                        sl += -Convert.ToDouble(dr["sl"]);
                    }
                    if (dr["sl"].ToString() != "" && dr["jj"].ToString() != "")
                    {
                        dr["je"] = -Convert.ToDouble(dr["sl"]) * Convert.ToDouble(dr["jj"]);
                        je += Convert.ToDouble(dr["je"]);
                    }
                    else
                    {
                        dr["je"] = 0;
                        je += Convert.ToDouble(dr["je"]);
                    }
                }
            }
            this.TextBox2.Text = pz.ToString();
            this.TextBox3.Text = sl.ToString();
            this.TextBox4.Text = je.ToString();

            BindGrid();
        }

本帖子中包含更多资源

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

x
沙发
发表于 2015-10-23 16:29:24 | 只看该作者
请基于空项目重现,这样的问题要调试才好办
板凳
 楼主| 发表于 2015-10-23 16:36:11 | 只看该作者
sanshi 发表于 2015-10-23 16:29
请基于空项目重现,这样的问题要调试才好办

如何重现给你?Gif可以么
地板
发表于 2015-10-23 17:10:06 | 只看该作者
andyxjy2 发表于 2015-10-23 16:36
如何重现给你?Gif可以么

基于开源版空项目,或者官网示例源代码,我这边要能在VS中调试
5#
 楼主| 发表于 2015-10-23 17:19:14 | 只看该作者
sanshi 发表于 2015-10-23 16:29
请基于空项目重现,这样的问题要调试才好办

基于在线实例的书去焦点功能,只是修改了数据结构,再失去焦点事件后对金额进行计算
<f:Grid ID="Grid1" ShowBorder="true" ShowHeader="true" Title="表格" EnableCollapse="true"
        Width="850px" runat="server" DataKeyNames="Id,Name" AllowCellEditing="true" ClicksToEdit="1"
        EnableAfterEditEvent="true">
        <Columns>
            <f:TemplateField Width="60px">
                <ItemTemplate>
                    <aspabel ID="Label1" runat="server" Text='<%# Container.DataItemIndex + 1 %>'></aspabel>
                </ItemTemplate>
            </f:TemplateField>
            <f:RenderField Width="100px" ColumnID="sl" DataField="sl" FieldType="String" HeaderText="数量">
                <Editor>
                    <f:NumberBox ID="NumberBox1" Required="true" runat="server">
                    </f:NumberBox>
                </Editor>
            </f:RenderField>
            <f:RenderField Width="100px" ColumnID="jj" DataField="jj" FieldType="String" HeaderText="进价">
                <Editor>
                    <f:NumberBox ID="NumberBox2" Required="true" runat="server">
                    </f:NumberBox>
                </Editor>
            </f:RenderField>
            <f:BoundField Width="100px" ColumnID="je" DataField="je" HeaderText="金额">
            </f:BoundField>
            <f:RenderField Width="120px" ColumnID="EntranceDate" DataField="EntranceDate" FieldType="Date"
                Renderer="Date" RendererArgument="yyyy-MM-dd" HeaderText="入学日期">
                <Editor>
                    <fatePicker ID="DatePicker1" Required="true" runat="server">
                    </fatePicker>
                </Editor>
            </f:RenderField>
            <f:RenderCheckField Width="100px" ColumnID="AtSchool" DataField="AtSchool" HeaderText="是否在校" />
            <f:RenderField Width="100px" ColumnID="Major" DataField="Major" FieldType="String"
                ExpandUnusedSpace="true" HeaderText="所学专业">
                <Editor>
                    <f:TextBox ID="tbxEditorMajor" Required="true" runat="server">
                    </f:TextBox>
                </Editor>
            </f:RenderField>
        </Columns>
    </f:Grid>

private static void UpdateDataRow(Dictionary<string, object> rowDict, DataRow rowData)
        {
            // 姓名
            if (rowDict.ContainsKey("sl"))
            {
                rowData["sl"] = rowDict["sl"];
            }
            // 性别
            if (rowDict.ContainsKey("jj"))
            {
                rowData["jj"] = rowDict["jj"];
            }
            //// 入学年份
            //if (rowDict.ContainsKey("je"))
            //{
            //    rowData["je"] = rowDict["je"];
            //}
            // 入学日期
            if (rowDict.ContainsKey("EntranceDate"))
            {
                rowData["EntranceDate"] = rowDict["EntranceDate"];
            }
            // 是否在校
            if (rowDict.ContainsKey("AtSchool"))
            {
                rowData["AtSchool"] = rowDict["AtSchool"];
            }
            // 所学专业
            if (rowDict.ContainsKey("Major"))
            {
                rowData["Major"] = rowDict["Major"];
            }
            if (rowData["sl"].ToString() != "" && rowData["jj"].ToString() != "")
            {
                rowData["je"] = Convert.ToDouble(rowData["sl"]) * Convert.ToDouble(rowData["jj"]);
            }
            else
            {
                rowData["je"] = 0;
            }
        }

本帖子中包含更多资源

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

x
6#
 楼主| 发表于 2015-10-26 07:50:42 | 只看该作者
sanshi 发表于 2015-10-23 17:10
基于开源版空项目,或者官网示例源代码,我这边要能在VS中调试

你好,基于官方在线示例的程序已经QQ离线给你了
7#
 楼主| 发表于 2015-10-26 09:58:03 | 只看该作者
andyxjy2 发表于 2015-10-26 07:50
你好,基于官方在线示例的程序已经QQ离线给你了

刚才试了下  吧grid属性clicktoedit=“2” 之后就没有这个问题
8#
发表于 2015-10-26 11:49:49 | 只看该作者
已确是个BUG,下个版本会修正(v4.2.2)。

-可编辑单元格重新绑定数据时,先取消当前活动的编辑器(andyxjy2-7559)。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-1 10:26 , Processed in 0.051968 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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