在Codebehind内动态设置显示内容的DataFormatString

it2022-05-06  29

在DataGrid内控制单元格显示内容的格式,如时间格式的时候如果AutoGenerateColumns=false那么绑定列中设置 DataFormatString="{0:dd/mm/yyyy}" 就可以做到了可是AutoGenerateColumns=true的时候,就不好办了一个办法,可以在sql语句中使用convert或者cast函数转换一下。我们正在做的一个项目中有个动态查询功能,是根据用户选择的条件、需显示的字段来动态生成Sql语句(破坏了三层结构,不知道其他朋友如何做?)来查询的。如果用Sql的函数将非常麻烦,我采用了如下方法,在后台绑定数据的时候设置内容格式。

示例:

 

<% @ Page Language="C#" Debug="true"  %> <% @ Import Namespace="System.Data"  %> <! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" > < html  xmlns ="http://www.w3.org/1999/xhtml"  xml:lang ="gb2312"  lang ="gb2312" > < head > < title >  AutoGenerateColumns为true时,在Codebehind内设置内容的DataFormatString  </ title > < meta  http-equiv ="Content-Type"  content ="text/html; charset=gb2312"   /> < meta  name ="title"  content =""   /> < meta  name ="author"  content ="活靶子,Huobazi,www.AspxBoy.com"   /> < meta  name ="subject"  content =""   /> < meta  name ="language"  content ="gb2312"   /> < meta  name ="keywords"  content =""   /> < meta  name ="Copyright"  content ="www.AspxBoy.com"   /> < meta  name ="robots"  content ="all"   /> < script  language ="c#"  runat ="server" > void BindGrid(){        DataTable dt = new DataTable();        DataRow dr;        dt.Columns.Add(new DataColumn("我是日期"typeof(DateTime)));        dt.Columns.Add(new DataColumn("俺也是日期"typeof(DateTime)));         dt.Columns.Add(new DataColumn("偶也是日期啊,怎么我还带着时间?",typeof(DateTime)));        for (int i = 0; i < 10; i++)         {            dr = dt.NewRow();            dr[0= DateTime.Now;            dr[1= DateTime.Now;            dr[2= DateTime.Now;              dt.Rows.Add(dr);        }        dg.DataSource= dt;        dg.DataBind();}void Page_Load(object o, EventArgs e){    if(!IsPostBack)    {        BindGrid();    }}void ItemDataBound(object o , DataGridItemEventArgs e){    if(e.Item.ItemType==ListItemType.Item ||e.Item.ItemType==ListItemType.AlternatingItem )    {        DataRowView drv = (DataRowView)e.Item.DataItem;        for(int i=0;i<e.Item.Cells.Count;i++)        {                 e.Item.Cells[i].Wrap =    false;            string columnName=drv.Row.Table.Columns[i].ColumnName;            if( columnName.StartsWith("") )            {                e.Item.Cells[i].Text = ((DateTime)drv[columnName]).ToString("yyyy-MM-dd");                //也可以这样                //e.Item.Cells[i].Text = DataBinder.Eval(e.Item.DataItem,columnName,"{0:yyyy-MM-dd}");            }            if( columnName.StartsWith("") )            {                e.Item.Cells[i].Text = ((DateTime)drv[columnName]).ToString("dd/MM/yy");                //也可以这样                //e.Item.Cells[i].Text = DataBinder.Eval(e.Item.DataItem,columnName,"{0:yy-MM-dd}");            }        }    }} </ script > </ head > < body > < form  runat ="server" >          < ASP:DataGrid  id ="dg"  runat ="server"                    HeaderStyle-BackColor ="#aaaadd"             AutoGenerateColumns ="true"             OnItemDataBound ="ItemDataBound"             Width ="100%"          >          </ asp:DataGrid >          </ form > </ body > </ html >

 

http://www.aspxboy.com/Files/71/66/285.Aspx

 

转载于:https://www.cnblogs.com/huobazi/archive/2004/11/16/DataFormatStringInCodebehind.html

相关资源:垃圾分类数据集及代码

最新回复(0)