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去绑定数据,或者能不能修改下以上代码,有没有比这个更好的代码呢。。请有遇到类似问题的请指教
展开
 我来答
wnq0204
2010-03-09 · TA获得超过257个赞
知道小有建树答主
回答量:312
采纳率:0%
帮助的人:265万
展开全部
父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
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式