动态绑定模板列后根据ID找不到控件?
GridView里动态绑定模板列,如下:
TemplateField tf = new TemplateField();
tf.HeaderText = "选择";
tf.ItemTemplate = new MyTemplate("CheckBox", "gvcbIsConfirm", "");//MyTemplate是自定义模板,第一个参数是控件类型,第二个是控件ID,第三个是默认值
gv.Columns.Add(tf);//gv是我的GridView
MyTemplate如下:
public class MyTemplate : ITemplate
{
private string strControlType;
private string strControlID;
private string strDefaultValue;
public MyTemplate(string strControlType, string strControlID, string strDefaultValue)
{
this.strControlType = strControlType;
this.strControlID = strControlID;
this.strDefaultValue = strDefaultValue;
}
public void InstantiateIn(Control ctlContainer)
{
switch (strControlType)
{
case "CheckBox":
CheckBox cb = new CheckBox();
cb.ID = strControlID;
cb.Checked = false;
ctlContainer.Controls.Add(cb);
break;
case "TextBox":
TextBox txt = new TextBox();
txt.ID = strControlID;
txt.Text = strDefaultValue;
txt.Width = Unit.Pixel(100);
ctlContainer.Controls.Add(txt);
break;
}
}
}
绑定完毕后,我在后续操作中,获取不到CheckBox,
for (int i = 0; i < gv.Rows.Count; i++)
{
CheckBox cb = (CheckBox)gv.Rows[i].FindControl("gvcbIsConfirm");
if (cb.Checked)//cb一直是null
{
//...
}
}
请问哪里有问题,谢谢大家。