• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
thankgoodness
博客园    首页    新随笔    联系   管理    订阅  订阅

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

在应用中,很多时候需要在绑定以后去修改DataGrid的呈现,比如
(1)当数据符合一定的条件需要修改它的呈现方式
(2)将数据库中的逻辑值(0,1)变成男女来呈现等等
大致有2种方法来实现上述操作
(1)在ItemDataBound中修改值
(2)在绑定的时候用一个函数进行过虑
同样,数据库按照 http://www.cnblogs.com/thankgoodness/articles/1200344.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事件方法中进行操作,因为这个时候数据绑定了

posted @ 2008-05-16 12:33  宇晨  阅读(209)  评论(1)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3