如下一个类型定义using System;
using System.Web;
using System.Web.UI;
using CyberNext.DataAccess ;
using Microsoft.Web.UI.WebControls ;
using System.Web.UI.WebControls ;
using System.Web.UI.HtmlControls ;
using System.Data.SqlClient ;
using System.Data;
using System.Drawing;namespace BaseSuperClass.baseclass
{
//DataList类
public class CReport1:DataList{
protected override void OnLoad(EventArgs e) {
Set();
base.OnLoad (e);
}
public void Set(){
ReportBodyTemplate1 template=new ReportBodyTemplate1();
this.ItemTemplate=template;
this.DataSource=new string[]{"a","b","c","d","e"};
this.DataBind();
}
} //Datalist的itemtemplate:
public class ReportBodyTemplate1 : ITemplate{
private int itemcount=0;
public void InstantiateIn(System.Web.UI.Control container) {
container.Controls.Add(GetBody());
itemcount++;
}
public DataGrid GetBody(){
DataGrid _Body=new DataGrid();
TemplateColumn col= new TemplateColumn() ;
col.ItemTemplate = new ReportActionColTemplate2();
_Body.Columns.Add(col);
_Body.DataSource=new int[]{1,2,3,4,5};
_Body.DataBind();
_Body.ID="OnePage"+itemcount.ToString();
return _Body;
}
} //datagrid的一个列模板
public class ReportActionColTemplate2 : ITemplate{
private int itemcount1=0;
public void InstantiateIn(System.Web.UI.Control Father) {
Literal label=new Literal();
label.Text=itemcount1.ToString();
Father.Controls.Add(label);
itemcount1++;
} }
}
------------------------------------------------------------
问题是:为什么ReportActionColTemplate2 的InstantiateIn过程
执行的次数是数据行数的两倍?
按设计的思路应显示0,1.2,3,4
结果却是:5,6,7,8,9
-------------------------------------------------------------
using System.Web;
using System.Web.UI;
using CyberNext.DataAccess ;
using Microsoft.Web.UI.WebControls ;
using System.Web.UI.WebControls ;
using System.Web.UI.HtmlControls ;
using System.Data.SqlClient ;
using System.Data;
using System.Drawing;namespace BaseSuperClass.baseclass
{
//DataList类
public class CReport1:DataList{
protected override void OnLoad(EventArgs e) {
Set();
base.OnLoad (e);
}
public void Set(){
ReportBodyTemplate1 template=new ReportBodyTemplate1();
this.ItemTemplate=template;
this.DataSource=new string[]{"a","b","c","d","e"};
this.DataBind();
}
} //Datalist的itemtemplate:
public class ReportBodyTemplate1 : ITemplate{
private int itemcount=0;
public void InstantiateIn(System.Web.UI.Control container) {
container.Controls.Add(GetBody());
itemcount++;
}
public DataGrid GetBody(){
DataGrid _Body=new DataGrid();
TemplateColumn col= new TemplateColumn() ;
col.ItemTemplate = new ReportActionColTemplate2();
_Body.Columns.Add(col);
_Body.DataSource=new int[]{1,2,3,4,5};
_Body.DataBind();
_Body.ID="OnePage"+itemcount.ToString();
return _Body;
}
} //datagrid的一个列模板
public class ReportActionColTemplate2 : ITemplate{
private int itemcount1=0;
public void InstantiateIn(System.Web.UI.Control Father) {
Literal label=new Literal();
label.Text=itemcount1.ToString();
Father.Controls.Add(label);
itemcount1++;
} }
}
------------------------------------------------------------
问题是:为什么ReportActionColTemplate2 的InstantiateIn过程
执行的次数是数据行数的两倍?
按设计的思路应显示0,1.2,3,4
结果却是:5,6,7,8,9
-------------------------------------------------------------
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货