silverlight   发布时间:2022-05-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了[Silverlight]在DataGrid中显示行号大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

我们通常会碰到在DataGird的第一列(或某一列)自动显示该行行号的需求,如下图   分析这个问题我们需要两步走   向数据源添加数据时自动显示行号   从数据源删除数据时自动更新所有行号   首先做一些准备工作,我们需要为DataGird自定义第一列的单元格 <data:DataGridTemplatecolumn>    <data:DataGridTemplatecolumn.CellTe
我们通常会碰到在DataGird的第一列(或某一列)自动显示该行行号的需求,如下图

[Silverlight]在DataGrid中显示行号

  分析这个问题我们需要两步走
  向数据源添加数据时自动显示行号
  从数据源删除数据时自动更新所有行号
  首先做一些准备工作,我们需要为DataGird自定义第一列的单元格
<data:DataGridTemplatecolumn> 
  <data:DataGridTemplatecolumn.CellTemplate> 
    <DataTemplate> 
      <TextBlock /> 
    </DataTemplate> 
  </data:DataGridTemplatecolumn.CellTemplate> 
</data:DataGridTemplatecolumn>
  很简单,一个TextBlock而已
  再搞出一个实体类
  public class Person { 
    public String FullName { get; set; } 
    public int? Age { get; set; } 
    public String gender { get; set; } 
  }
  接着定义一个私有变量_personList并在初始化时为其添加几项以便测试。
  注:_personList是ObservableCollection,以下我们所有的操作都基于ObservableCollection。
ObservableCollection<Person> _personList;
_personList = new ObservableCollection<Person> { 
        new Person(){ FullName="forever",Age=13,gender="男" }, 
        new Person(){ FullName="fish",Age=14,gender="公"}, 
        new Person(){ FullName="SBPP",Age=40,gender="男"}, 
        new Person(){FullName="TNT",Age=null, 
        new Person(){FullName="SARS",Age=5,gender="无"}, 
      };
  接着我们开始解决一个问题,即添加数据时自动显示数据行号:
  假设我们有一个按钮用来向数据源中插入数据,如
    private void btnAdd_Click(object sender, RoutedEventArgs E) { 
      _personList.Add(new Person() { FullName = "Lulu", Age = 18, gender = "女" }); 
    }
  为了让每一行的第一列产生自动编号,我们需要捕获dataGrid1的LoadingRow事件,如
dataGrid1.LoadingRow += new EventHandler<DataGridRowEventArgs>(dataGrid1_LoadingRow);
void dataGrid1_LoadingRow(object sender, DataGridRowEventArgs E) { 
  int index = e.Row.GeTindex(); 
  var cell = dataGrid1.columns[0].GetCellContent(e.Row) as TextBlock; 
  cell.Text = (index + 1).ToString(); 
}
  F5运行后点击增加按钮,你会发现数据源中新增的数据已经加入到DataGrid的新行中,并且第一列自动显示了该行的行号。
  现在我们开始解决第二个问题,即从数据源删除数据时自动更新所有行号
  现在GridView中再自定义一列,每列的显示一个按钮用来删除该条数据
<data:DataGridTemplatecolumn> 
  <data:DataGridTemplatecolumn.CellTemplate> 
    <DataTemplate> 
      <Button Content="删除" Click="btnDel_Click" /> 
    </DataTemplate> 
  </data:DataGridTemplatecolumn.CellTemplate> 
</data:DataGridTemplatecolumn>
  然后在.cs中处理btnDel_Click事件
private void btnDel_Click(object sender, RoutedEventArgs E) { 
  var btn = sender as Button; 
  var index = _personList.IndexOf(btn.DataContext as Person); 
  _personList.RemoveAt(indeX); 
  foreach (var item in dataGrid1.ItemssourcE) { 
    var txtBlock = dataGrid1.columns[0].GetCellContent(item) as TextBlock; 
    txtBlock.Text = (DataGridRow.GetRowContainingElement(txtBlock).GeTindex() + 1).ToString(); 
  } 
}
  ok,大功告成。
  如果您有更好的方法,请告诉我,多谢。
  出处:http://024hi.cnblogs.com/

大佬总结

以上是大佬教程为你收集整理的[Silverlight]在DataGrid中显示行号全部内容,希望文章能够帮你解决[Silverlight]在DataGrid中显示行号所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。