落幕 发表于 2015-12-4 10:17:00

C1TrueDBGrid 冻结列功能,在冻结后正常还原可以实现,但是在重新绑定数据源以后,再还原Frozen属性,失效

先操作冻结功能->冻结成功->点击还原冻结功能->还原成功->继续冻结某一列->冻结成功->重新绑定原来的数据源->取消冻结列->还原失败。这时什么原理、详见代码


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using C1.Win.C1TrueDBGrid;

namespace C1Test
{
        public partial class Form1 : Form
        {
                DataTable dt = new DataTable();
                public Form1()
                {
                        InitializeComponent();
                }

                private void Form1_Load(object sender, EventArgs e)
                {
                        InitTable();
                        c1TrueDBGrid1.DataSource = dt;
                }


                public void InitTable()
                {
                        dt.Clear();
                        for (int i = 0; i < 10; i++)
                        {
                                dt.Columns.Add((i + 1).ToString(), typeof(string));
                        }
                        for (int j = 0; j < 4; j++)
                        {
                                DataRow dr = dt.NewRow();
                                for (int i = 0; i < 10; i++)
                                {
                                        dr = (i + 1) + "" + (i + 1);
                                }
                                dt.Rows.Add(dr);
                        }
                }

                private void button1_Click(object sender, EventArgs e)
                {
                        if (c1TrueDBGrid1.DataSource == null)
                                return;
                        c1TrueDBGrid1.Splits.DisplayColumns.Frozen = true;
                }

                private void button2_Click(object sender, EventArgs e)
                {
                        c1TrueDBGrid1.DataSource = null;
                        c1TrueDBGrid1.DataMember = null;
                        //InitTable();
                        c1TrueDBGrid1.DataSource = dt;
                }

                private void button3_Click(object sender, EventArgs e)
                {
                        foreach (C1DisplayColumn item in c1TrueDBGrid1.Splits.DisplayColumns)
                        {
                                item.Frozen = false;
                        }
                }
        }
}



Alice 发表于 2015-12-4 18:17:00

回复 1楼落幕的帖子

谢谢您的反馈。
这个问题我们已经重现了,推测是产品的bug,已经提交到产品组进行修复。
您可以暂时先在数据源更改之后,先将原来的冻结代码再次设置一遍,再取消冻结。

如果问题有修复或是新的反馈,我们会尽快通知您。
很抱歉给您带来不便。

Alice 发表于 2015-12-8 16:38:00

回复 1楼落幕的帖子

BugID:139545。
如果产品修复或是其他更新,我们会尽快通知您。

落幕 发表于 2015-12-11 14:05:00

回复 3楼Alice的帖子

比较忙,没来看回复,我本身也暂时解决了,思路和你所提供的一样。

Alice 发表于 2015-12-11 16:16:00

回复 4楼落幕的帖子

谢谢您的反馈。
页: [1]
查看完整版本: C1TrueDBGrid 冻结列功能,在冻结后正常还原可以实现,但是在重新绑定数据源以后,再还原Frozen属性,失效