0

Telerik のRadTreeList制御に問題があります。にデータをロードするとRadTreeList、[展開] ボタンをクリックした場合にのみ、その子にアクセスできます。展開しないと、ChildItemsリストは空です。拡張せずに特定の親の子を取得する方法はありますか?

4

1 に答える 1

0

子項目は、親項目が展開されている場合にのみコントロールに存在します。ただし、子アイテムにアクセスするためにコードでアイテムを展開することは可能です。(親を展開して表示したくない場合は、親を折りたたんだ状態に戻すことができます。)

コントロールのライフサイクルで何かが発生するため、少し注意が必要です。

private bool isGetChildItems = false;

protected void Page_Load(オブジェクト送信者, EventArgs e)
{
    if (IsPostBack)
    {
        //if (子アイテムへのアクセスを必要とする条件)
        {
            isGetChildItems = true;
            //必要なノードを展開するロジック
            RadTreeList1.Items[0].Expanded = true;
        }
    }
}

protected void RadTreeList1_DataBound(オブジェクト送信者, 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 = false;
        RadTreeList1.Items[0].Expanded = false;
        RadTreeList1.DataBind();
    }
}

于 2014-05-25T19:07:47.310 に答える