Repeater嵌套时,如何给内层嵌套的Repeater中的一个按钮赋值?
我有两个Repeater(命名为"rptHotel"、"rptRoom")嵌套,里面那个Repeater的一个Button会根据内层Reapter的不同ID值赋不同的Te...
我有两个Repeater(命名为"rptHotel"、"rptRoom")嵌套,里面那个Repeater的一个Button会根据内层Reapter的不同ID值赋不同的Text属性。
protected void rptHotel_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
HotelDataOperate hdo = new HotelDataOperate();
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
Repeater rpt = e.Item.FindControl("rptRoom") as Repeater;
DataRowView rowv = (DataRowView)e.Item.DataItem;
int typeid = Convert.ToInt32(rowv["id"]);
//Button btn = e.Item.FindControl("rptRoom").FindControl("btnBook") as Button;
//btn.Text = "XXXX"; //这里会有一个if语句给Text属性赋不同值。
rpt.DataSource = hdo.getRoomList(typeid);
rpt.DataBind();
}
} 展开
protected void rptHotel_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
HotelDataOperate hdo = new HotelDataOperate();
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
Repeater rpt = e.Item.FindControl("rptRoom") as Repeater;
DataRowView rowv = (DataRowView)e.Item.DataItem;
int typeid = Convert.ToInt32(rowv["id"]);
//Button btn = e.Item.FindControl("rptRoom").FindControl("btnBook") as Button;
//btn.Text = "XXXX"; //这里会有一个if语句给Text属性赋不同值。
rpt.DataSource = hdo.getRoomList(typeid);
rpt.DataBind();
}
} 展开
展开全部
直接btn肯定是错的,想一下内层的repeater可能有多项,每项都可能有Button
而且既然要赋值,肯定是在绑定之后,否则值就被覆盖了
protected void rptHotel_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
HotelDataOperate hdo = new HotelDataOperate();
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
Repeater rpt = e.Item.FindControl("rptRoom") as Repeater;
DataRowView rowv = (DataRowView)e.Item.DataItem;
int typeid = Convert.ToInt32(rowv["id"]);
//Button btn = e.Item.FindControl("rptRoom").FindControl("btnBook") as Button;
//btn.Text = "XXXX"; //这里会有一个if语句给Text属性赋不同值。
rpt.DataSource = hdo.getRoomList(typeid);
rpt.DataBind();
Button btn = null;
foreach (RepeaterItem item in rpt.Items)
{
btn = item.FindControl("btnBook") as Button;
if (btn != null)
{
btn.Text = "xxxx";
}
}
}
}
而且既然要赋值,肯定是在绑定之后,否则值就被覆盖了
protected void rptHotel_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
HotelDataOperate hdo = new HotelDataOperate();
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
Repeater rpt = e.Item.FindControl("rptRoom") as Repeater;
DataRowView rowv = (DataRowView)e.Item.DataItem;
int typeid = Convert.ToInt32(rowv["id"]);
//Button btn = e.Item.FindControl("rptRoom").FindControl("btnBook") as Button;
//btn.Text = "XXXX"; //这里会有一个if语句给Text属性赋不同值。
rpt.DataSource = hdo.getRoomList(typeid);
rpt.DataBind();
Button btn = null;
foreach (RepeaterItem item in rpt.Items)
{
btn = item.FindControl("btnBook") as Button;
if (btn != null)
{
btn.Text = "xxxx";
}
}
}
}
更多追问追答
追问
大神,是这样的!!!大神,还有问题啊。给btn加上Text属性解决了,给Button加上Click事件怎么办呢?
btn+=EventHandle(btn_Click);然后实作btn_Click(sender,e)事件,这样也根本不执行btn_Click事件诶~~痛苦。求解决~~我今天想这个问题一晚上了%>_<%。
追答
按钮的事件直接在前台写,可以用rptRoom的ItemCommand事件,也可以直接用按钮的Click事件,建议使用按钮的事件操作起来反而容易
类似这样的代码
具体如何操作,自己先想想吧,搞不定再说
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询