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