您的位置:首页 > 其它

wpf之datagrid 序号列

2015-10-31 22:01 239 查看

方法一:在datagrid最前面添加序列号

窗体加载时:
<span style="font-family:KaiTi_GB2312;font-size:24px;">private void MdiChild_Loaded(object sender, RoutedEventArgs e)
{
dgData.LoadingRow += new EventHandler<DataGridRowEventArgs>(dataGrid_LoadingRow);
dgData.UnloadingRow += new EventHandler<DataGridRowEventArgs>(dataGrid_UnLoadingRow);
}

public void dataGrid_LoadingRow(object sender, DataGridRowEventArgs e)
{
e.Row.Header = e.Row.GetIndex() + 1;
}

public  void dataGrid_UnLoadingRow(object sender, DataGridRowEventArgs e)
{
dataGrid_LoadingRow(sender, e);
if (dgData.Items != null)
{
for (int i = 0; i < dgData.Items.Count; i++)
{
try
{
DataGridRow row = dgData.ItemContainerGenerator.ContainerFromIndex(i) as DataGridRow;
if (row != null)
{
row.Header = (i + 1).ToString();
}
}
catch { }
}
}
}</span>

结果:



缺点:没有标识“序号”二字。

方法二:在datagrid中添加一列,用来放置序列号

界面上的代码:
<span style="font-family:KaiTi_GB2312;font-size:24px;"><DataGrid>
<DataGrid.Columns>
<DataGridTemplateColumn Header=" 序号" Width="50" MinWidth="10" IsReadOnly="True">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type DataGridRow}}, Path=Header}" HorizontalAlignment="Left" VerticalAlignment="Center" Margin="10,0,0,0"></TextBlock>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Binding="{Binding Name}" Width="*" Header="账套名称" IsReadOnly="True" />
</DataGrid.Columns>
</DataGrid></span>

后台添加一个datagrid的【LoadingRow】方法:
<span style="font-family:KaiTi_GB2312;font-size:24px;"> private void dgData_LoadingRow(object sender, DataGridRowEventArgs e)
{
e.Row.Header = e.Row.GetIndex() + 1;
}</span>

结果:



缺点:有缺陷,怎么回事?是因为datagrid的【LoadingRow】方法的存在,若这个方法去掉,则序号也不显示了。最终想了个折中的办法,将最前面的那一个序号列隐藏掉。

方法:在datagrid中加上一个属性【HeadersVisibility="Column" 】,OK,结果完美出现。



没有了最前面的那个边框,反而更好看了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  wpf