1

希望这是可以理解的。将大大简化代码。

我有一个母版页,然后我有 Default.aspx。在此默认页面中,我有以下内容。

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

好的,所以我在 App_Code 文件夹中有一个类。假设在 default.aspx 上的 page_load 上,我启动了一个名为“Populate_Content”的函数。我首先给它两个参数,项目应该在的面板和从 db 中选择的 ID。所以它是这样的Populate_Content(Panel1, 4)

该函数从数据库中选择,并在运行时生成链接按钮并将它们添加到 Panel1,它还为它们提供了单击事件的事件处理程序。

问题是我试图让“Populate_Content”函数在存储在 App_Code 文件夹中的 clickevent 中工作。如何在 App_Code 文件夹内的类文件中选择控件 (Panel1)。我可以使用这种方法获取所选链接按钮的 id

//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”。所以我需要找到 default.aspx 中的“Panel1”控制器。

我曾尝试像这样在发件人上使用页面属性。但是不行。

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

我虽然页面属性会给我控制器所在的页面,但我在谷歌上找不到任何相关信息。

我做错了还是有其他方法?

编辑:这是 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);
     }
 }

}

4

0 回答 0