作者winnercow (winner)
看板C_Sharp
标题[问题] GridView 使用TemplateField问题
时间Wed Jun 24 20:26:50 2009
我在gridview1中想要动态加入CheckBox 利用TemplateField实做
并在button1按下时 检查有那些CheckBox被选择
程式码如下
protected void initiallize(DataSet ds)
{
TemplateField customField = new TemplateField();
customField.ItemTemplate = new GridViewTemplate("2");
GridView1.Columns.Add(customField);
GridView1.DataSource = ds;
GridView1.DataBind();
}
public class GridViewTemplate : System.Web.UI.ITemplate
{
private string _id;
public GridViewTemplate(string id) { _id = id; }
public void InstantiateIn(System.Web.UI.Control container)
{
CheckBox cb = new CheckBox();
cb.ID = "CheckBox" + _id.ToString();
container.Controls.Add(cb);
}
}
protected void Button1_Click(object sender, EventArgs e)
{
LabelMsg.Text = "";
for (int i = 0; i < GridView1.Rows.Count; i++)
{
if(((CheckBox)GridView1.Rows[i].Cells[0]
.FindControl("CheckBox2")).Checked)
{
LabelMsg.Text += i.ToString();
}
}
}
执行後 GridView1的确也将CheckBox加入了 但是当Button1按下时 在黄色行有error
侦错发现 GridView1.Rows[i].Cells[0].Controls.Count = 0
但是在initiallize function结尾时(绿色处)检查
GridView1.Rows[i].Cells[0].FindControl("CheckBox2")没问题
请问一下如何解决??
或是有更好的实作方法??
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 211.20.98.2