代码改变世界

asp.net 动态加载用户自定义控件竟然不执行DataGrid 中的ItemDataBound事件?

2004-08-18 16:58  无常  阅读(2128)  评论(2)    收藏  举报
自定义控件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 窗体设计器生成的代码

        
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 );
给控件绑定数据去没这个问题?

为什么呢?