Программный доступ к DragHandleTemplate в ASP.NET AJAX ReorderList - PullRequest
0 голосов
/ 18 ноября 2008

Есть ли способ программного доступа к DragHandleTemplate из ReorderList (ASP.NET AJAX Control Toolkit) ... В частности, во время ItemDataBound для ReorderList, чтобы изменить его внешний вид на уровне элемента?

Ответы [ 3 ]

1 голос
/ 02 февраля 2009

К сожалению, нет способа получить держатель перетаскивания из ReorderListItem. Вместо этого вы можете создать серверный элемент управления внутри DragHandleTemplate (например, PlaceHolder), а затем найти его в обработчике событий ItemDataBound:

В файле aspx:

<DragHandleTemplate>
  <div class="dragHandle">
    <asp:Label ID="lblDragHandle" runat="server" />
  </div>
</DragHandleTemplate>

В файле aspx.cs:

protected void ReorderList1_ItemDataBound(object sender, AjaxControlToolkit.ReorderListItemEventArgs e)
{
   Label lblDragHandle = (Label)FindControlRecursive(e.Item, "lblDragHandle");
   lblDragHandle.Text = e.Item.ItemIndex.ToString();
}

private Control FindControlRecursive(Control root, string id)
{
   if (root.ID == id)
   {
      return root;
   }

   foreach (Control c in root.Controls)
   {
      Control t = FindControlRecursive(c, id);
      if (t != null)
      {
         return t;
      }
   }

   return null;
}

Я скопировал FindControlRecursive метод из блога Джеффа.

1 голос
/ 29 апреля 2011

Вы также можете выразить FindControlRecursive в LINQ:

        private Control FindControlRecursive(Control root, string id)
        {
            return root.ID == id
                       ? root
                       : (root.Controls.Cast<Control>().Select(c => FindControlRecursive(c, id)))
                             .FirstOrDefault(t => t != null);
        }
0 голосов
/ 29 января 2009

Вы не можете получить доступ к DragHandleTemplate программно на сервере , но если вы создаете окружающие элементы с уникальными идентификаторами (для каждой строки), вы должны иметь возможность использовать CSS-селекторы или Javascript, чтобы изменить только некоторые из товар.

...