C#父级repeater中嵌套子级repeater
我在网络上看到很多这样的文章。。我试用后发现有点小问题(不知道是我程序问题还是别的什么)。。网络都是说要父级repeater绑定数据后要添加Repeater1_ItemD...
我在网络上看到很多这样的文章。。我试用后发现有点小问题(不知道是我程序问题还是别的什么)。。网络都是说要父级repeater绑定数据后要添加Repeater1_ItemDataBound事件代码如下:
protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
GSORT_INFO gs = new GSORT_INFO();
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
Repeater rep = (Repeater)e.Item.FindControl("rpquestionlist");//找到里层的repeater对象
DataRowView rowv = (DataRowView)e.Item.DataItem;//找到分类Repeater关联的数据项
int typeid = Convert.ToInt32(rowv["gsortid"]); //获取填充子类的id
DataSet ds = gs.GetList2(typeid);
rep.DataSource = ds;
rep.DataBind();
}
}
因为父级的类别在主页一打开后是闭合上的,点击父级的类名后才打开子级的repeater,可这时候我遇到的问题是:以上代码是页面绑定repeater1后就执行的部分也就是紧接着自动绑定了子级repeater2的数据,可这时候repeater2其实是还没有显示出来(要点击父级repeater),但是点击父级的repeater类名后就条到以上的代码中int typeid = Convert.ToInt32(rowv["gsortid"]);这时候取的值就不对了始终是1,又重新绑定了一次,变成了不管点击哪个类别都是取1去绑定。
请问这怎么解决呀,我希望在点击父级后在根据点击的类名ID去绑定数据,或者能不能修改下以上代码,有没有比这个更好的代码呢。。请有遇到类似问题的请指教 展开
protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
GSORT_INFO gs = new GSORT_INFO();
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
Repeater rep = (Repeater)e.Item.FindControl("rpquestionlist");//找到里层的repeater对象
DataRowView rowv = (DataRowView)e.Item.DataItem;//找到分类Repeater关联的数据项
int typeid = Convert.ToInt32(rowv["gsortid"]); //获取填充子类的id
DataSet ds = gs.GetList2(typeid);
rep.DataSource = ds;
rep.DataBind();
}
}
因为父级的类别在主页一打开后是闭合上的,点击父级的类名后才打开子级的repeater,可这时候我遇到的问题是:以上代码是页面绑定repeater1后就执行的部分也就是紧接着自动绑定了子级repeater2的数据,可这时候repeater2其实是还没有显示出来(要点击父级repeater),但是点击父级的repeater类名后就条到以上的代码中int typeid = Convert.ToInt32(rowv["gsortid"]);这时候取的值就不对了始终是1,又重新绑定了一次,变成了不管点击哪个类别都是取1去绑定。
请问这怎么解决呀,我希望在点击父级后在根据点击的类名ID去绑定数据,或者能不能修改下以上代码,有没有比这个更好的代码呢。。请有遇到类似问题的请指教 展开
1个回答
展开全部
父repeater中添加:
<asp:HiddenField ID="hidNumber" runat="server" Value='<%#DataBinder.Eval(Container.DataItem,"Number") %>' />
Repeater1_ItemDataBound事件取值:
HiddenField hidChildNumber = (HiddenField)e.Items.FindControl("hidChildNumber");
或者
DataBinder.Eval(e.Item.DataItem, "Number").ToString()
int typeid = Convert.ToInt32(hidChildNumber.Value);
int typeid = Convert.ToInt32(DataBinder.Eval(e.Item.DataItem, "Number").ToString());
//获取填充子类的id
<asp:HiddenField ID="hidNumber" runat="server" Value='<%#DataBinder.Eval(Container.DataItem,"Number") %>' />
Repeater1_ItemDataBound事件取值:
HiddenField hidChildNumber = (HiddenField)e.Items.FindControl("hidChildNumber");
或者
DataBinder.Eval(e.Item.DataItem, "Number").ToString()
int typeid = Convert.ToInt32(hidChildNumber.Value);
int typeid = Convert.ToInt32(DataBinder.Eval(e.Item.DataItem, "Number").ToString());
//获取填充子类的id
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询