在动态生成的模板列里CheckBox里取值!!
在OnInit里动态生成了DataGrid,并生成动态模板列CheckBox c,现要在后台取c的值,却无论如何都取不到,总是报错"未将对象引用设置到对象的实例"
应该将c控件生成的代码放在何处才能被找到??
下面一段是位于OnInit里的生成DataGrid中的一小段:
TemplateColumn tm=new TemplateColumn();
tm.ItemTemplate=new ColumnTemplate1();
tm.HeaderText="Choose the Targets to Benchmark";
DG.Columns.Add(tm);
而依据是新建的一个类:
public class ColumnTemplate1 : ITemplate
{
//第一个模板列
public void InstantiateIn(Control container)
{
CheckBox c=new CheckBox();
//c.ID="a";
c.DataBinding+=new EventHandler(this.OnDataBinding);
container.Controls.Add(c);
}
public void OnDataBinding(object sender, EventArgs e)
{
CheckBox c=(CheckBox) sender;
DataGridItem container=(DataGridItem) c.NamingContainer;
c.Text = ((DataRowView)container.DataItem)["target"].ToString();//绑定stuname字段
}
}
100分的题目.另一处也有类似一问题分值60分.
解决者立即获分.
问题点数:100、回复次数:4Top
1 楼ksnoopy(snoopy)回复于 2006-02-09 01:38:46 得分 40
DataGrid中的子控件要用FindControl方法,把代码全帖出来吧Top
2 楼wu896222(WYF)回复于 2006-02-09 08:27:21 得分 50
参考如下:
ControlValue = Convert.ToInt32(((CheckBox)DataGrid1.Items[i].Cells[j].Controls[0]).Checked).ToString()Top
3 楼wu896222(WYF)回复于 2006-02-09 08:30:32 得分 0
另,将生成DataGrid代码放在Page_Load事件内,但不要放在if (!Page.IsPostBack){}内.Top
4 楼beijingbeerman(啤酒肚)回复于 2006-02-09 08:39:36 得分 10
markTop




