怎么在绑定后动态改变DataGrid中的内容

在应用中,很多时候需要在绑定以后去修改DataGrid的呈现,比如
(1)当数据符合一定的条件需要修改它的呈现方式
(2)将数据库中的逻辑值(0,1)变成男女来呈现等等
大致有2种方法来实现上述操作
(1)在ItemDataBound中修改值
(2)在绑定的时候用一个函数进行过虑
同样,数据库按照 http://www.cnblogs.com/lovecherry/archive/2005/03/25/125487.html

我们来实现以下2个功能
(1)在ItemDataBound中把年龄小于30的人的一行底色修改为粉红色
代码如下
private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
  {
   if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem||e.Item.ItemType==ListItemType.EditItem)
   {
    if(Convert.ToInt16(DataBinder.Eval(e.Item.DataItem,"iAge"))<30)e.Item.BackColor=Color.Pink;
   }

  }
当然需要注册事件
this.DataGrid1.ItemDataBound += new System.Web.UI.WebControls.DataGridItemEventHandler(this.DataGrid1_ItemDataBound);
(2)把姓名为“朱晔”的人,用加重显示
前台代码
<%#DataBinder.Eval(Container.DataItem,"vName") %>
修改为
<%# myfunc(DataBinder.Eval(Container.DataItem,"vName")) %>
后台代码
protected string myfunc(object s)
  {
   string _s;
   if(s.ToString()=="朱晔")
    _s="<b>"+s.ToString()+"</b>";
   else
    _s=s.ToString();
   return _s;
  }

以上2种功能也就是我上面说的大致有2种方法来实现上述操作
就这么简单。
对于其他的一些相关扩展就不细说了
比如根据一个值来改变一些控件的属性:
如果控件是模板列中的可以通过((控件类型)e.Item.FindControl(id)).属性=值 来动态设定;
如果控件不是模板列中的可以通过((控件类型)e.Item.Controls[索引号]).属性=值 来动态设定
还比如根据一个列的值来写其他列的统计值,都一样的
在ItemDataBound事件方法中进行操作,因为这个时候数据绑定了

在Windows Presentation Foundation (WPF) ,如果你想创建一个单例窗口,并且DataGrid控件的数据绑定更新后,新打开的窗口不会自动刷新数据,你可以按照以下步骤操作: 1. 创建一个窗口类,使用 `Application.Current.MainWindow` 或手动存储一个静态引用来作为单例窗口。 ```csharp public partial class MainWindow : Window { private static readonly MainWindow _instance; public MainWindow() { InitializeComponent(); _instance = this; } // 获取单例 public static MainWindow Instance => _instance; } ``` 2. 将DataGrid的DataContext绑定到一个独立的视图模型类,这个类可以包含你的数据集合。当数据集合发生变化时,通知DataGrid。 ```csharp public class ViewModel { public ObservableCollection<MyObject> Data { get; set; } = new ObservableCollection<MyObject>(); // 添加数据改变通知机制,如依赖属性、INotifyCollectionChanged等 public void UpdateData() { // 更新Data集合... DataChanged?.Invoke(); } } // 在MainWindow.xaml.cs绑定ViewModel private ViewModel viewModel; public MainWindow() { InitializeComponent(); viewModel = new ViewModel(); DataContext = viewModel; // 当ViewModel数据发生改变时,关闭当前窗口并新开一个 viewModel.DataChanged += (_, _) => { Close(); MainWindow.Instance.Show(); // 使用单例打开新窗口 }; } ``` 通过这种方式,每次DataGrid数据源更新时,新的窗口会被打开,而旧窗口将保持原有数据状态。如果你希望新窗口显示最新的数据,可以在打开窗口的地方直接处理数据更新后再显示。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值