как добавить серверную привязку к коду формы div? - PullRequest
0 голосов
/ 25 октября 2011

плз см. Ниже aspx:

<div id="divFilesBody">
              <div class="divFilesBody_Row">
                <%= Files %>
                <a id="MyAnchor1" runat="server" OnServerClick="AnchorForDwonload_Click">Server Side Anchor 1</a>
            </div>

MyAnchor1 Серверное событие клика отлично работает!
я хочу сделать что-то подобное из кода:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Collections;
using System.IO;
using FileExplorer.Classes;

namespace FileExplorer.en
{
    public partial class Download : System.Web.UI.Page
    {
        public string Files = "";
        protected void Page_Load(object sender, EventArgs e)
        {
...
            foreach (FileInfo f in dir.GetFiles("*.*"))
            {
                Files += "<a class='MyAnchor2' runat='server' OnServerClick='AnchorForDwonload_Click'>";
                Files += "Server Side Anchor 2";
                Files += "</a>";
            }
        Files += "<a id='MyAnchor3' runat='server' OnServerClick='AnchorForDwonload_Click'>";
        Files += "Server Side Anchor 3";
        Files += "</a>";
        }

        protected void AnchorForDwonload_Click(object sender, EventArgs e)
        {
            Response.Write("Server Side Anchor Works");
        }

    }
}

но MyAnchor2 не работает после загрузки страницы ...
как я могу решить эту проблему?

EDIT
я добавил MyAnchor3 после комментария (Anchor With ID) -> по-прежнему не работает

выходной HTML выглядит так:

        <a id='MyAnchor3' runat='server' OnServerClick='AnchorForDwonload_Click'>
        Server Side Anchor 3
       </a>

заранее спасибо

1 Ответ

2 голосов
/ 25 октября 2011

Это неправильный способ создания динамических элементов управления в ASP.NET. Для этого вы можете использовать элементы управления LinkButton:

Вы должны делать что-то вроде этого:

Markup:

<asp:Panel ID="pnlFilesBody" runat="server">
    <!-- resolves to a DIV -->
</asp:Panel>

Код-за:

protected override void OnInit(EventArgs e)  
{   
    //create controls at every page load and assign the same ids to the controls
    //to preserve click events

    foreach (FileInfo f in dir.GetFiles("*.*"))  
    { 
        //create a new linkbutton
        LinkButton btn = new LinkButton();
        btn .ID = String.Format("lnk_{0}", pnlFilesBody.Controls.Count);
        btn.Click += new EventHandler(btn_Click);
        btn.Text = String.Format("Server Side Anchor {0}", pnlFilesBody.Controls.Count);

        //add the linkbutton to the files body panel
        pnlFilesBody.Controls.Add(btn);
    }
}

protected void btn_Click(object sender, EventArgs e)
{
    //put your click event logic here
}
...