在Asp.Net的cs后置文件中不能直接用控件ID来操作数据绑定控件中的子控件,必须用FindControl找到控件才能操作。
//查找Repeater中的子控件 protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e) { // e.Item.ItemType 为当前行的类型 if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) { // 找到ID为btnDelete的TextBox控件,e.Item表示当前绑定的那一行 TextBox txtName = (TextBox)e.Item.FindControl("btnDelete"); txtName.Text = "我是Repeater中被查找的子控件"; } } //查找ListView中的子控件 protected void ListView1_ItemDataBound(object sender, ListViewItemEventArgs e) { //这里和Repeater稍有不同 if (e.Item.ItemType == ListViewItemType.DataItem) { TextBox txtName = (TextBox)e.Item.FindControl("btnDelete"); txtName.Text = "我是ListView中被查找的子控件"; } }
在Repeater中绑定DataTable后,获取当前数据行的某个字段值:
DataRow row = (DataRow)((DataRowView)e.Item.DataItem).Row;
string ParentID = row["ParentID"].ToString(); // 获取当前数据行的ParentID值