0

プログラムでReorderListのDragHandleTemplateにアクセスする方法はありますか(ASP.NET AJAX Control Toolkit)...特にReorderListのItemDataBound中に、アイテムごとのレベルで外観を変更するために?

4

3 に答える 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 に答える