最近做东东的时候需要在一个数据控件内部再嵌套一个数据控件。自己研究了一个方法,其实原理很简单。以DataList控件为例:
就是自己写个方法遍历父控件里的参照物,取到值后再为子数据控件绑定。
public void BindReplyMsg()
{
foreach (DataListItem dli in dltShowMessage.Items)
{
int messageid = Convert.ToInt32(((HiddenField)dli.FindControl("hfMsgId")).Value);
DataTable dt= Mybm.ReplyMsg(messageid,"tabl1");
if (dt != null)
{
((Repeater)dli.FindControl("rptReply")).DataSource = dt.DefaultView;
((Repeater)dli.FindControl("rptReply")).DataBind();
}
}
}
这个绑定数据的方法一定要在父控件绑定之后调用。
另外网上还有一种方法:
在DataList控件的OnItemDataBound事件里找到子数据控件,为其绑定数据
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
object o = DataBinder.Eval(e.Item.DataItem,"SomeField");
DataGrid dg = (DataGrid)e.Item.FindControl("YourDataGridID");
dg.DataSource = GetDataSource(o);
dg.DataBind();
}