自定义控件StudentScoreMoudle.ascx用于显示学生成绩,其代码如下 namespace oa.Teacher.WebClient.modules{ using System; using System.Data; using System.Drawing; using System.Web; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; /**//// <summary> /// StudentScoreMoudle 的摘要说明。 /// </summary> public class StudentScoreMoudle : System.Web.UI.UserControl { protected System.Web.UI.WebControls.DataGrid dgScore; private void Page_Load(object sender, System.EventArgs e) { // 在此处放置用户代码以初始化页面 } public void bindData( DataView data ) { dgScore.DataSource = data; dgScore.DataBind(); } Web 窗体设计器生成的代码#region Web 窗体设计器生成的代码 override protected void OnInit(EventArgs e) { // // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。 // InitializeComponent(); base.OnInit(e); } /**//// <summary> /// 设计器支持所需的方法 - 不要使用代码编辑器 /// 修改此方法的内容。 /// </summary> private void InitializeComponent() { this.dgScore.ItemDataBound += new System.Web.UI.WebControls.DataGridItemEventHandler(this.dgScore_ItemDataBound); this.Load += new System.EventHandler(this.Page_Load); } #endregion private void dgScore_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e) { if (e.Item.ItemType == ListItemType.Header) { e.Item.Cells[0].ColumnSpan = 6; e.Item.Cells[0].Text = "大类1</td><td>大类2</td></tr><tr><td>" + e.Item.Cells[0].Text; Response.Write("sdfsd"); } } }}其怪的是:如果用此方法动态加载的话改变不了表头! StudentScoreMoudle sc= Page.LoadControl( "../modules/StudentScoreMoudle.ascx" ) as StudentScoreMoudle; sc.bindData( data.Tables[ StudentScoreData.学生成绩表名 ].DefaultView );而在页面设计时先把此控件放到页面上,然后调用ssm.bindData( data.Tables[ StudentScoreData.学生成绩表名 ].DefaultView );给控件绑定数据去没这个问题?为什么呢? 转载于:https://www.cnblogs.com/wuchang/archive/2004/08/18/34551.html