FineUI 官方论坛

标题: 更新3.3.1后,使用Grid编辑后红色修改标示不消失,另外重... [打印本页]

作者: 舞柯庶    时间: 2013-7-31 08:26
标题: 更新3.3.1后,使用Grid编辑后红色修改标示不消失,另外重...
今天更新了更新3.3.1后,
发现使用Grid编辑后红色修改标示不消失,但是内容却是更新后
另外重新绑定Grid好像没有起到作用。但是3.3.0是没问题的。代码如下;

更新:
                   db.Exec_Trans(sql_log);                  
                   UserGrid_Edit.Bind();  //重新绑定
                  Alert.Show("数据保存成功!");

        public void Bind()
        {
            try
            {
                DB db = new DB();
                DataView dv;
                         dv = db.Drv_table(SqlStringTmp + " order by " + String.Format("{0} {1}", SortColumn, SortDirection));
                // 1.设置总项数(特别注意:数据库分页一定要设置总记录数RecordCount)
                         Grid1.RecordCount = dv.Count; //GetTotalCount(dv);
                // 2.获取当前分页数据
                DataTable table = GetPagedDataTable(dv,Grid1.PageIndex,Grid1.PageSize);
                Grid1.DataSource = table;
                Grid1.DataBind();
            }
            catch (Exception ex) { Alert.ShowInTop(ex.ToString() + "<br>" + SqlStringTmp + " order by " + String.Format("{0} {1}", SortColumn, SortDirection), "Grid数据绑定出错_Bind()", MessageBoxIcon.Error); }
        }

作者: 舞柯庶    时间: 2013-7-31 08:45
测试了下。Bind() 也执行了。但是没有起到绑定效果l。
我是做了个模板,里面放个Grid,然后再页面中引用的。在3.3.0里面都正常使用。升级后 出现这个问题
作者: 舞柯庶    时间: 2013-7-31 09:03
问题好像出在 更新语句

public void Exec_Trans(string[] sqlstrs)
        {
            SqlConnection Conn = CreatConn();
                          Conn.Open();
            SqlCommand myCommand = Conn.CreateCommand();
            SqlTransaction trans = Conn.BeginTransaction();
                          myCommand.Transaction = trans;
            try
            {

                foreach (string sqlstr in sqlstrs)
                {
                    if (!string.IsNullOrEmpty(sqlstr))
                    {
                        myCommand.CommandText = sqlstr;
                        myCommand.ExecuteNonQuery();
                    }
                }

                trans.Commit();
            }
            catch (Exception ex)
            {
                trans.Rollback();
                throw new Exception("数据库提交失败:" + ex.Message + "<br>" + myCommand.CommandText);
            }
            finally
            {
                Conn.Close();
            }            
        }

原因不清楚?????
作者: sanshi    时间: 2013-7-31 09:13
你说的是不是两个问题:
1. 发现使用Grid编辑后红色修改标示不消失,但是内容却是更新后
2. 另外重新绑定Grid好像没有起到作用

这两个分别怎么发生的,请详细描述一下
作者: 舞柯庶    时间: 2013-7-31 09:24
本帖最后由 舞柯庶 于 2013-7-31 09:26 编辑

我测试了下 。是一个问题。就是执行了更新后。系统重新绑定不执行了。好像问题出在 更新语句。但是更新却是执行了。我点击右键刷新页面 里面的内容就变化了。实在搞不定 只能用 PageContext.Refresh(); 替换 UserGrid_Edit.Bind(); 这样页面都刷新了。
              

string[] sql_arr = xSqls.Split('$');   
                  
                   db.Exec_Trans(sql_arr);//问题出在此处               
                                      
                   Alert.Show("数据保存成功!");

                   UserGrid_Edit.Bind();  //重新绑定
//---------------------------------------------------

  public void Exec_Trans(string[] sqlstrs)
        {
            SqlConnection Conn = CreatConn();
                          Conn.Open();
            SqlCommand myCommand = Conn.CreateCommand();
            SqlTransaction trans = Conn.BeginTransaction();
                          myCommand.Transaction = trans;
            try
            {

                foreach (string sqlstr in sqlstrs)
                {
                    if (!string.IsNullOrEmpty(sqlstr))
                    {
                        myCommand.CommandText = sqlstr;
                        myCommand.ExecuteNonQuery();
                    }
                }

                trans.Commit();
            }
            catch (Exception ex)
            {
                trans.Rollback();
                throw new Exception("数据库提交失败:" + ex.Message + "<br>" + myCommand.CommandText);
            }
            finally
            {
                Conn.Close();
            }            
        }




      /// <summary>
        /// Grid绑定数据
        /// </summary>
        public void Bind()
        {
            try
            {
                DB db = new DB();
                DataView dv;
                         dv = db.Drv_table(SqlStringTmp + " order by " + String.Format("{0} {1}", SortColumn, SortDirection));

                // 1.设置总项数(特别注意:数据库分页一定要设置总记录数RecordCount)
                         Grid1.RecordCount = dv.Count; //GetTotalCount(dv);

                // 2.获取当前分页数据
                DataTable table = GetPagedDataTable(dv,Grid1.PageIndex,Grid1.PageSize);

                Grid1.DataSource = table;
                Grid1.DataBind();
            }
            catch (Exception ex) { Alert.ShowInTop(ex.ToString() + "<br>" + SqlStringTmp + " order by " + String.Format("{0} {1}", SortColumn, SortDirection), "Grid数据绑定出错_Bind()", MessageBoxIcon.Error); }
        }

作者: 小兵    时间: 2013-7-31 09:28
三石大哥,是不是和我的问题有类似之处,是模板列更新问题导致的哦。
作者: 舞柯庶    时间: 2013-7-31 09:42
本帖最后由 舞柯庶 于 2013-7-31 09:48 编辑

我把模板列 都干掉了也不行啊。我试了试。

???
作者: 舞柯庶    时间: 2013-7-31 09:44
本帖最后由 舞柯庶 于 2013-7-31 09:48 编辑

?????

作者: sanshi    时间: 2013-7-31 10:01
舞柯庶 发表于 2013-7-31 09:24
我测试了下 。是一个问题。就是执行了更新后。系统重新绑定不执行了。好像问题出在 更新语句。但是更新却是 ...
  1. tring[] sql_arr = xSqls.Split('这个地方不指定数据源 DataSource 就直接 Bind ?);   
  2.                   
  3.                    db.Exec_Trans(sql_arr);//问题出在此处               
  4.                                       
  5.                    Alert.Show("数据保存成功!");

  6.                    UserGrid_Edit.Bind();  //重新绑定
复制代码
这个地方不指定数据源 DataSource 就直接 Bind ?
作者: 舞柯庶    时间: 2013-7-31 10:03
本帖最后由 舞柯庶 于 2013-7-31 10:13 编辑

问题好像是:
如果数据表定义时,默认值搞成空值  (''),就可以了。估计是个Bug
但是 如果这个地方输入有点值没问题。有点不行。  字符型
值看了下 也没有规律


作者: 舞柯庶    时间: 2013-7-31 10:08
sanshi 发表于 2013-7-31 10:01
这个地方不指定数据源 DataSource 就直接 Bind ?

那是个 函数

public void Bind()
         {
             try
             {
                 DB db = new DB();
                 DataView dv;
                          dv = db.Drv_table(SqlStringTmp + " order by " + String.Format("{0} {1}", SortColumn, SortDirection));

                // 1.设置总项数(特别注意:数据库分页一定要设置总记录数RecordCount)
                          Grid1.RecordCount = dv.Count; //GetTotalCount(dv);

                // 2.获取当前分页数据
                 DataTable table = GetPagedDataTable(dv,Grid1.PageIndex,Grid1.PageSize);

                Grid1.DataSource = table;
                 Grid1.DataBind();
            }
             catch (Exception ex) { Alert.ShowInTop(ex.ToString() + "<br>" + SqlStringTmp + " order by " + String.Format("{0} {1}", SortColumn, SortDirection), "Grid数据绑定出错_Bind()", MessageBoxIcon.Error); }
         }

作者: sanshi    时间: 2013-7-31 10:21
舞柯庶 发表于 2013-7-31 10:08
那是个 函数

public void Bind()
  1. UserGrid_Edit.Bind();  //重新绑定
复制代码
这里的 UserGrid_Edit 应该是表格实例吧,怎么是函数?
作者: 舞柯庶    时间: 2013-7-31 11:48
我是用Grid做了个模板。然后再页面中引用它。 这个函数在 模板中
作者: sanshi    时间: 2013-7-31 12:33
请使用最新版测试一下:
http://fineui.com/bbs/forum.php?mod=viewthread&tid=3521
作者: 舞柯庶    时间: 2013-7-31 15:20
本帖最后由 舞柯庶 于 2013-7-31 15:24 编辑

更新到3.3.1.1后(extjs也更新了)。
问题解决了部分;
还有一些。我观察了下,好像不行,比如说列A 有多行数据,第一行数据时有一行数据是 aa,那么我更改其他行 如果更新为 aa或a 时
或者 更改后的值如果包含有原来值的话,
就会出现原来的问题

作者: 隨風往事    时间: 2013-7-31 20:30
这个问题上个版本(3.3.0)也有。但偶尔仅出现在本地测试时候,但是发布出去又正常。
作者: 舞柯庶    时间: 2013-7-31 21:59
3.3.0倒是没有发现这个问题




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