Использование класса в App_code - Поиск элементов управления на странице, которая использует этот класс - PullRequest
1 голос
/ 15 июля 2010

Надеюсь, это будет понятно.Собираюсь упростить код много.

У меня есть мастер-страница, затем у меня есть Default.aspx.На этой странице по умолчанию у меня есть следующее.

<asp:Content ID="Content2" ContentPlaceHolderID="CPH_Main" Runat="Server">
    <asp:Panel ID="Panel1" runat="server">
    </asp:Panel>
</asp:Content>

Хорошо, поэтому у меня есть класс в папке App_Code.Допустим, на page_load на default.aspx я запускаю функцию, которая называется «Populate_Content».Я начинаю с того, что задаю ему два параметра: панель, в которой должны быть элементы, и идентификатор для выбора из БД.Таким образом, это выглядит следующим образом: Populate_Content(Panel1, 4)

Функция выбирает из БД и во время выполнения делает кнопки LinkBIN и добавляет их в Panel1, а также дает им обработчик событий для события click.Проблема в том, что я пытаюсь заставить функцию «Populate_Content» работать в кликвентах, которые хранятся в папке App_Code.Как выбрать элемент управления (Panel1) в файле класса, который находится в папке App_Code.Я могу получить идентификатор выбранной кнопки ссылки с помощью этого подхода

//This the class inside App_Code
void description_Click(object sender, EventArgs e)
{
    string id = ((LinkButton)sender).ID.ToString();
    //Then i need to do this.. but i need to find the "Panel1" controller
    //Populate_Content("Panel1", id);
}

Но мне нужно также запустить «Populate_Content» в событии click.Поэтому мне нужно найти контроллер "Panel1", который находится в default.aspx.

Я попытался использовать свойство page для отправителя следующим образом.Но не стоит.

Page def_page = ((LinkButton)sender).Page;
Panel panel1 = (Panel)def_page.FindControl("Panel1");

Я думаю, что свойство страницы даст мне страницу, на которой находится контроллер, я не могу найти что-нибудь об этом в Google.Есть ли другой способ?

Редактировать: Это Populate_content

public void Populate_content(Panel cont, string treenode)
{
var query = from n in dc.Nemanet_Navigations
            where n.UserId == userGuid && n.Nav_pID.ToString() == treenode
            orderby n.Nav_Name
            select n;

foreach (var item in query)
 {
     if (item.Nav_IsFile == true)
     {
         Panel div = new Panel();
         div.CssClass = "BulletDiv";
         cont.Controls.Add(div);

         Image picture = new Image();
         picture.ImageUrl = "~/Icons/Nytt_skjal.png";
         div.Controls.Add(picture);

         div.Controls.Add(new LiteralControl("<br/>"));

         LinkButton description = new LinkButton();
         description.Text = item.Nav_Name;
         description.ID = item.Nav_ID.ToString();
         description.Click += new EventHandler(description_Click);
         div.Controls.Add(description);


     }

     else if (item.Nav_IsFile == false)
     {
         Panel div = new Panel();
         div.CssClass = "BulletDiv";
         cont.Controls.Add(div);

         Image picture = new Image();
         picture.ImageUrl = "~/Icons/Ny_mappa.png";
         div.Controls.Add(picture);

         div.Controls.Add(new LiteralControl("<br/>"));

         LinkButton description = new LinkButton();
         description.Text = item.Nav_Name;
         description.ID = item.Nav_ID.ToString();
         description.Click += new EventHandler(description_Click);

         div.Controls.Add(description);
     }
 }

}

...