C# 如何在RadGridView中创建行号cloumn

C# 如何在RadGridView中创建行号cloumn,c#,winforms,telerik,radgridview,C#,Winforms,Telerik,Radgridview,我有一个带有一些行的RadGridView,但我需要一个行号列。我用这个代码来做: private void GridViewOrder_CellFormatting(object sender, Telerik.WinControls.UI.CellFormattingEventArgs e) { if (e.CellElement.ColumnInfo.Name == "RowNumber" && string.IsNullOrEmpty(e.CellElement.

我有一个带有一些行的RadGridView,但我需要一个行号列。我用这个代码来做:

private void GridViewOrder_CellFormatting(object sender, Telerik.WinControls.UI.CellFormattingEventArgs e)
{
    if (e.CellElement.ColumnInfo.Name == "RowNumber" && string.IsNullOrEmpty(e.CellElement.Text))
    {
        e.CellElement.Value = e.CellElement.RowIndex + 1;
    }
}

但我的问题是,当我过滤网格时,我想在过滤后的网格中有一个新的行号。

当您过滤datagridview时,网格的数据源将发生变化,数据源将是DataView。
我认为您应该处理DataGridView.DataSourceChanged事件(),然后循环新的数据源并设置“RowNumber”列的值。

这个项目可以帮助您,它向您展示了如何自定义行模板 给你:

    void radGridView1_CellFormatting(object sender, CellFormattingEventArgs e)
    {
        if (e.CellElement.ColumnInfo.Name == "DecimalColumn" )
        {
            Console.WriteLine(radGridView1.ChildRows.IndexOf(e.Row));
            e.CellElement.Text = (e.CellElement.RowIndex + 1).ToString();
        }
    }
好了:

<telerik:GridTemplateColumn HeaderText="#" UniqueName="RowNumber">
                        <HeaderStyle Width="3%" Height="25px" HorizontalAlign="Center" Font-Bold="true">
                        </HeaderStyle>
                        <ItemStyle Height="35px" HorizontalAlign="Center"></ItemStyle>
                        <ItemTemplate>
                            <asp:Label runat="server" ID="lblRowNumber" Text='<%# Container.DataSetIndex+1 %>'></asp:Label>
                        </ItemTemplate>
                    </telerik:GridTemplateColumn>

谢谢,但我使用的是radgridview telerik网格,它没有数据源更改事件您可以在数据源中添加一列(行号),然后在过滤网格后,您应该在数据视图(新数据源)中更新此列的值。