Список дочерних элементов RadTreeList равен нулю
У меня проблема с телериком RadTreeList
контроль. Когда я загружаю данные в RadTreeList
Я могу получить доступ к его дочерним элементам, только когда нажимаю кнопку "Развернуть". Без расширения, ChildItems
список пуст. Есть ли способ получить детей определенного родителя без расширения?
1 ответ
Дочерние элементы присутствуют в элементе управления только при раскрытии родительского элемента. Однако можно расширить элемент в коде, чтобы получить доступ к дочерним элементам. (Затем вы можете восстановить родительский узел в свернутом состоянии, если не хотите, чтобы он отображался в развернутом виде.)
Необходима небольшая осторожность из-за того, когда что-то происходит в жизненном цикле элемента управления:
private bool isGetChildItems = false; защищенная пустота 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 имеет {0} дочерних элементов')", RadTreeList1.Items[0].ChildItems.Count), true); } } защищенный void RadTreeList1_PreRender(отправитель объекта, EventArgs e) { if (isGetChildItems) { // Восстановление состояния узла, очистка нашего флага и повторная привязка isGetChildItems = false; RadTreeList1.Items[0].Expanded = false; RadTreeList1.DataBind(); } }