在 C1TrueDBGrid 表格控件中显示行号

发布时间:2013/06/24 00:06 发布者:jian

返回博客中心

本文将要实现的功能是来自实际的客户需求,在 C1TrueDBGrid for WinForms 表格控件中显示数据行号,类似于 Excel 第一列中显示的行号效果。 C1TrueDBGrid for WinForms 本身没有内置这样的功能,因为,在 C1TrueDBGrid 中第一列是用于显示单元格选中标志,下面我们就来看看如何在 C1TrueDBGrid 中实现这一功能。

在 C1TrueDBGrid 中无法自定义行头,所以我们会添加一个新的非绑定列用来代替原始的行头,并将新添加用于显示行号的列放在在表格的最左边,在添加的非绑定列中会显示行号和选中标志。当非绑定列添加之后,会触发 UnboundColumnFetch 事件,我们可以在该事件中完成以上需求,代码如下:

    private void c1TrueDBGrid1_UnboundColumnFetch(object sender, C1.Win.C1TrueDBGrid.UnboundColumnFetchEventArgs e)
    {
        if (e.Row == row)
        {
            e.Value = "";
        }
        else
        {
            if (!filter)
            {
                e.Value = (e.Row + 1).ToString();
            }
            else
            {
                if (!filterdone)
                {
                    counter++;
                    for (int i = filindex; i < filtercol.Length; i++)
                    {
                           
                        if (filtercol[i] == c1TrueDBGrid1.Columns[c1TrueDBGrid1.Col].FilterText || filtercol[i].StartsWith(c1TrueDBGrid1.Columns[c1TrueDBGrid1.Col].FilterText))
                        {
                            e.Value = rowindex[i];
                            filindex = i + 1;
                            filteredindexes[counter - 1] = rowindex[i];
                            break;
                        }
                    }
                    if (counter == c1TrueDBGrid1.RowCount)
                    {
                        counter = 0;
                        filterdone = true;
                    }
                }
                else
                {
                    e.Value = filteredindexes[e.Row];
                }
            }
        }
    }

 

接下来我们需要在 OwnerDrawCell 事件中根据当前行是否是选中行来判断单元格是显示行号还是显示选中标志,代码如下:

    // 处理OwnerDrawCell 事件
    this.c1TrueDBGrid1.OwnerDrawCell += (ss, ee) =>
    {
        if (ee.Row == row)
            ee.Style.BackgroundImage = Image.FromFile(@"..\..\Images\Rec_Sel.png");
    };

 

运行截图:

C1TrueDBGrid 行号

源码下载:VS2010 + C1 Studio for WinForms 2013V1


关于葡萄城

赋能开发者!葡萄城是专业的集开发工具、商业智能解决方案、低代码开发平台于一身的软件和服务提供商,为超过 75% 的全球财富 500 强企业提供服务。葡萄城专注控件软件领域30年,希望通过模块化的开发控件、灵活的低代码应用开发平台等一系列开发工具、解决方案和服务,帮助开发者快速响应复杂多变的业务需求,最大程度地发挥开发者的才智和潜能,让开发者的 IT 人生更从容更美好。

了解详情,请访问葡萄城官网