关于repeater 嵌套、如何获得里面的repeater 中的控件
可以用Items属性来遍历行并用FindControl进行寻找,
如下所示:在Repeater的Item Command事件下下遍历:
for(int i=0;i<repeater1.Items.Count;i++)
{
CheckBox cb=(CheckBox )repeater1.Items[i].FindControl("CheckBox1");
if(cb.Checked)
{ //相关数据处理 }
}
但是,如果在HeaderTemplate和FooterTemplate模板中的控件就无能为力了,此时我们只能用Controls属性来解决问题。假设页面中有如下一个Repeater控件:
程序代码
'>
下边代码示例寻找Label1和Label3:
程序代码
如何在Repeater的HeaderTemplate和FooterTemplate模板中寻找控件?
在Repeater的ItemTemplate模板中的控件,我们可以用Items属性来遍历行并用FindControl进行寻找,
如下所示:在Repeater的Item Command事件下下遍历:
for(int i=0;i<repeater1.Items.Count;i++)
{
CheckBox cb=(CheckBox )repeater1.Items[i].FindControl("CheckBox1");
if(cb.Checked)
{ //相关数据处理 }
}
但是,如果在HeaderTemplate和FooterTemplate模板中的控件就无能为力了,此时我们只能用Controls属性来解决问题。假设页面中有如下一个Repeater控件:
程序代码
'>
下边代码示例寻找Label1和Label3:
程序代码
//在HeaderTemplate中寻找Label1,默认为第0个string s=((Label)Repeater1.Controls[0].FindControl("Label1")).Text;//在FooterTemplate中寻找Label2,默认为最后一个string s=((Label)Repeater1.Controls[Repeater1.Controls.Count - 1].FindControl("Label2")).Text;
关于Repeater嵌套问题。
Repeater中嵌套Repeater。实现界面如下: 前台页面部分: '> 后台代码部分(部分代码): //在绑定分类品名时,绑定分类下的产品 private void rptCategories_ItemDataBound(object sender, System.Web.UI.WebControls.RepeaterItemEventArgs e) { BLL.Products products =new BLL.Products(); if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) { Repeater rptProduct = (Repeater) e.Item.FindControl("rptProduct"); //找到分类Repeater关联的数据项 DataRowView rowv = (DataRowView)e.Item.DataItem; //提取分类ID int CategorieId = Convert.ToInt32(rowv["ID"]); //根据分类ID查询该分类下的产品,并绑定产品Repeater rptProduct.DataSource = products.GetProductsByCategorieId(CategorieId); rptProduct.DataBind(); } }
asp.net repeater1中 嵌套repeater2 数据源查询的一个条件值 是repeater1的一个值,周末绑定遍历
repeater2 数据源查询的一个条件值 是repeater1的一个值,这个值是跟repeater2 在同一行的吗?
如果是的话可以使用repeater1的itemdatabound事件来绑定
protected voidrepeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
Label lblJobCategoryID = e.Item.FindControl("lblJobCategoryID") as Label;
Label lblCategoryName = e.Item.FindControl("lblCategoryName") as Label;
Jobcategory EntityJobCategory = new Jobcategory();
Repeater repeater2= e.Item.FindControl("repeater2") as Repeater;
var source = EntityJobCategory.GetJobCategoryContact(lblJobCategoryID.Text.ToInt());
repeater2.DataSource = source;
repeater2.DataBind();
}
}
如果不是的话只能绑定完repeater1之后遍历整个repeater1
foreach (GridViewRow gdrow in repeater1.Rows)
{
Label lblJobCategoryID = gdrow.FindControl("lblJobCategoryID") as Label;
Label lblCategoryName = gdrow.FindControl("lblCategoryName") as Label;
Jobcategory EntityJobCategory = new Jobcategory();
Repeater repeater2= gdrow.FindControl("repeater2") as Repeater;
var source = EntityJobCategory.GetJobCategoryContact(lblJobCategoryID.Text.ToInt());
repeater2.DataSource = source;
repeater2.DataBind();
}