Existe-t-il un moyen d'accéder par programme au DragHandleTemplate d'une liste de réorganisation (ASP.NET AJAX Control Toolkit) ... Spécifiquement pendant ItemDataBound pour ReorderList, afin de changer son apparence à le niveau par article?Accès programmé à DragHandleTemplate dans ASP.NET AJAX ReorderList
0
A
Répondre
0
Vous ne pouvez pas accéder DragHandleTemplate programatically sur le serveur, mais si vous créez les éléments environnants avec de l'identifiant unique (par la suite), vous devriez pouvoir les sélecteurs CSS-utilisation ou Javascript pour changer seulement quelques-uns des éléments.
1
Malheureusement, il n'y a aucun moyen d'obtenir un support de drag à partir de ReorderListItem. Au lieu de cela, vous pouvez créer un contrôle serveur à l'intérieur DragHandleTemplate (par exemple PlaceHolder), puis trouver dans votre gestionnaire d'événements ItemDataBound:
Dans le fichier ASPX:
<DragHandleTemplate>
<div class="dragHandle">
<asp:Label ID="lblDragHandle" runat="server" />
</div>
</DragHandleTemplate>
Dans le fichier 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;
}
J'ai copié la méthode FindControlRecursive du blog de Jeff.
1
Vous pouvez également exprimer FindControlRecursive dans 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);
}