如何在ItemDataBound内获得DataGrid的列名称HeaderText

如何在ItemDataBound内获得DataGrid的列名称HeaderText

作者:活靶子  来源:http://www.cnblogs.com/huobazi/archive/2004/11/03/60081.aspx

如果 AutoGenerateColumns="false" 使用绑定列,模板列则比较好办,直接使用 YourDataGrid.Columns[编号].HeaderText 获得可是,如果 AutoGenerateColumns="true" ,就比较麻烦了但是可以变通做到。 
示例: 

<%@ 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> ItemDataBoundGetColumnName </title>

<script language="c#" runat="server">
void BindGrid()
{
DataTable dt = new DataTable();
DataRow dr;
dt.Columns.Add(new DataColumn("IntegerValue", typeof(Int32)));
dt.Columns.Add(new DataColumn("StringValue", typeof(string)));
dt.Columns.Add(new DataColumn("DateTimeValue", typeof(DateTime)));
dt.Columns.Add(new DataColumn("BoolValue", typeof(bool)));
dt.Columns.Add(new DataColumn("CurrencyValue", typeof(double)));
for (int i = 0; i < 36; i  ) {
dr = dt.NewRow();
dr[0] = i;
dr[1] = "项 "  i.ToString();
dr[2] = DateTime.Now;
dr[3] = (i % 2 != 0) ? true : false;
dr[4] = 1.23 * (i 1);
dt.Rows.Add(dr);
}
dg.DataSource= dt;
dg.DataBind();
}
void Page_Load(object o, EventArgs e)
{
dg.PagerStyle.Mode = PagerMode.NumericPages;
if(!IsPostBack)
{
BindGrid();
}

void btnClick(object o , EventArgs e)
{
Response.Write("页面回发,但是不执行ItemDataBound");

void PageChange(object o , DataGridPageChangedEventArgs e)
{
dg.CurrentPageIndex = e.NewPageIndex;
BindGrid();
}
void ItemDataBound(object o , DataGridItemEventArgs e)
{
if(e.Item.ItemIndex > -1 )//必须
{
DataRowView drv = (DataRowView)e.Item.DataItem;
for (int i=0; i<drv.Row.Table.Columns.Count ; i  )
{
Response.Write(drv.Row.Table.Columns.ColumnName  " ");
}
}
}
</script> 
</head>
<body>
<form runat="server">
<ASP: DataGrid id="dg" runat="server"
HeaderStyle-BackColor="#aaaadd"
AutoGenerateColumns="true"
AllowPaging="true"
PageSize="6"

editor/images/smilies/2007-3-30_5-43-53.gif" border=0 smilieid="9">ageChange"
>
</asp:  DataGrid>
</br>
<asp: button id="btn" runat="server"  Text="我是按钮,按我一下"></asp:button>
<p>在AutoGenerateColumns="false"使用绑定列或者模板列的时候只需要使用 </P>
<p><font color="blut">YourDataGrid.Columns[编号].HeaderText</font> 去获取
</P>
</form>
</body>
</html>

 感谢原创者的辛勤劳动,希望对您有所帮助,转载请注明原出处。
 您可能对 [Asp.Net] 的这些文章也感兴趣:

System.Web.Routing入门及进阶 下篇
用WebClient.UploadData方法上载文件数据
缩略图多路径多格式保存
如何用MAPI和CDONTS来发邮件
在ASP.NET 中使用 Unity Application Block(含源码下载)
Asp.net Mvc Framework 十(测试方法及Filter的示例)
asp.net 2.0中加密web.config
在PetShop 4.0中ASP.NET缓存的实现(1)
PageTemplate(页模板)
在自定义控件中实现ICallbackEventHandler接口不经过回发而实现客户端回掉