0

我对 Telerik 的RadTreeList控制有疑问。当我将数据加载到 中时RadTreeList,只有单击展开按钮才能访问其子项。不展开,ChildItems列表为空。有没有办法在不扩展的情况下获得特定父母的孩子?

4

1 回答 1

0

子项仅在父项展开时出现在控件中。但是,可以在代码中扩展项目以访问子项目。(如果您不希望它显示为展开状态,则可以将父级恢复到其折叠状态。)

由于在控件的生命周期中发生了一些事情,因此需要一点小心:

私人布尔 isGetChildItems = false;

protected void Page_Load(object sender, EventArgs e)
{
    if (IsPostBack)
    {
        //if(您需要访问子项的条件)
        {
            isGetChildItems = true;
            //你的逻辑来扩展你需要的任何节点
            RadTreeList1.Items[0].Expanded = true;
        }
    }
}

protected void RadTreeList1_DataBound(object sender, EventArgs e)
{
    //在生命周期的这一点上,我们可以访问子项
    if (isGetChildItems)
    {
        //对子项做任何我们需要做的事情
        ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "", string.Format("alert('Item 0 has {0} child items')", RadTreeList1.Items[0].ChildItems.Count), true );
    }
}

protected void RadTreeList1_PreRender(对象发送者,EventArgs e)
{
    if (isGetChildItems)
    {
        //恢复节点状态,清除我们的标志并重新绑定
        isGetChildItems = 假;
        RadTreeList1.Items[0].Expanded = false;
        RadTreeList1.DataBind();
    }
}

于 2014-05-25T19:07:47.310 回答