修改DataGrid的呈现

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

求助DataGrid无法呈现的问题

05-02

运行的时候无法看到DataGrid控件及数据,我已经把Visible设置为True了,为什么运行后总是看不到?望高手指点。代码如下rnrnusing System;rnusing System.Collections;rnusing System.ComponentModel;rnusing System.Data;rnusing System.Drawing;rnusing System.Web;rnusing System.Web.SessionState;rnusing System.Web.UI;rnusing System.Web.UI.WebControls;rnusing System.Web.UI.HtmlControls;rnusing System.Data.SqlClient;rnrnnamespace testrnrn /// rn /// document_get 的摘要说明。rn /// rn public class document_get : System.Web.UI.Pagern rn protected System.Web.UI.WebControls.Button bt1;rn protected System.Web.UI.WebControls.Button bt2;rn protected System.Web.UI.WebControls.DataGrid dg1;rn protected System.Web.UI.WebControls.Button bt3;rn rn rn private void Page_Load(object sender, System.EventArgs e)rn rn // 在此处放置用户代码以初始化页面rn bt1.Attributes.Add("onclick","return getconfirm ();");rn bt2.Attributes.Add("onclick","return getconfirm2 ();");rn bt3.Attributes.Add("onclick","return getconfirm3 ();");rn myinit();rn rn rnrn rnrnrn #region Web 窗体设计器生成的代码rn override protected void OnInit(EventArgs e)rn rn //rn // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。rn //rn InitializeComponent();rn base.OnInit(e);rn rn rn rn /// rn /// 设计器支持所需的方法 - 不要使用代码编辑器修改rn /// 此方法的内容。rn /// rn private void InitializeComponent()rn rn this.dg1.PageIndexChanged += new System.Web.UI.WebControls.DataGridPageChangedEventHandler(this.gb1_PageIndexChanged);rn this.bt1.Click += new System.EventHandler(this.bt1_Click);rn this.Load += new System.EventHandler(this.Page_Load);rnrn rn #endregionrnrn void myinit()rn rn string a1="zhang";rn tryrn rn rn SqlConnection SqlConnection1=new SqlConnection((string)Application["sqlConnectionString"]);rn SqlConnection1.Open();rn string sql="select fromName,date,title,hurry,new from document_send where toName="+a1; rn SqlDataAdapter da=new SqlDataAdapter(sql,SqlConnection1);rn DataSet ds=new DataSet();rn da.Fill(ds,"table1");rn dg1.DataSource=ds.Tables["table1"].DefaultView;rn dg1.DataBind();rn dg1.CurrentPageIndex=0;rn rn rn catchrn rn rn finallyrn rn rn rn rn rn private void bt1_Click(object sender, System.EventArgs e)rn rn rn rnrn private void gb1_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)rn rn dg1.CurrentPageIndex=e.NewPageIndex;rn dg1.DataBind();rn rn rnrnrn附html代码:rnrn rn rn rn rn rn rn rn rn rn rn rn rn rn rn

没有更多推荐了,返回首页

私密
私密原因:
请选择设置私密原因
  • 广告
  • 抄袭
  • 版权
  • 政治
  • 色情
  • 无意义
  • 其他
其他原因:
120
出错啦
系统繁忙,请稍后再试