有没有办法以编程方式访问 ReorderList 的 DragHandleTemplate(ASP.NET AJAX 控件工具包)......特别是在 ReorderList 的 ItemDataBound 期间,以便在每个项目级别更改其外观?
Michael
问问题
1851 次
3 回答
1
您还可以在 LINQ 中表达 FindControlRecursive:
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);
}
于 2011-04-29T17:40:01.673 回答
1
不幸的是,没有办法从 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;
}
我从 Jeff 的博客中复制了FindControlRecursive方法。
于 2009-02-02T10:12:51.857 回答
0
您不能在服务器上以编程方式访问 DragHandleTemplate ,但如果您创建具有唯一 ID(每行)的周围元素,您应该能够使用 CSS 选择器或 Javascript 仅更改某些项目。
于 2009-01-29T15:33:59.650 回答