e.Item.Cells[1] 结合controls[n]怎么用? 不明白Controls[n]中 n的含义,如果cell[5]也就是第六列里面有很多控件,
且有不同类型重复的控件呢,这种秩序是按相同类型的控件的秩序来计算,还是按所有类型的控件的先后顺序来算呢? LinkButton lbt2 = (LinkButton)e.Item.Cells[1].Controls[1];
if (lbt2 != null)
{
lbt2.Text = "hello!";
lbt2.Attributes.Add("onclick", "return confirm('kkek1')");
}
运行时是正常的,但是把里面的这个代码写成: LinkButton lbt2 = (LinkButton)e.Item.Cells[1].Controls[0];出问题了,错误说:Unable to cast object of type 'System.Web.UI.WebControls.HyperLink' to type 'System.Web.UI.WebControls.LinkButton'.
怎么回事?
且有不同类型重复的控件呢,这种秩序是按相同类型的控件的秩序来计算,还是按所有类型的控件的先后顺序来算呢? LinkButton lbt2 = (LinkButton)e.Item.Cells[1].Controls[1];
if (lbt2 != null)
{
lbt2.Text = "hello!";
lbt2.Attributes.Add("onclick", "return confirm('kkek1')");
}
运行时是正常的,但是把里面的这个代码写成: LinkButton lbt2 = (LinkButton)e.Item.Cells[1].Controls[0];出问题了,错误说:Unable to cast object of type 'System.Web.UI.WebControls.HyperLink' to type 'System.Web.UI.WebControls.LinkButton'.
怎么回事?
cells[1]表示获取列的值就是第一列,Controls[0]表示在第一列中得到的是第一个控件
不好意思,上面cell[1]都改成 [5]
LinkButton lbt2 = (LinkButton)e.Item.Cells[1].FindControl("控件名称");
而非模板列,必须是这样写:
LinkButton lbt2 = (LinkButton)e.Item.Cells[1].Controls[0];
Controls[0],其中0是Cells[1]单元格第一个控件,若是1是Cells[1]单元格第二个控件,依此类推!!
LinkButton lbt = ((LinkButton)(e.Item.Cells[5].Controls[0]))
这样就能找到
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
LinkButton lbt = (LinkButton)(e.Item.Cells[5].Controls[0])}