希望这是可以理解的。要简化代码。
我有一个母版页,然后我有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”的函数。我开始给它两个参数,项目应该在的Panel和从db中选择的ID。
所以它就像这样Populate_Content(Panel1, 4)
该函数从db中选择并在运行时生成Linkbuttons并将它们添加到Panel1,它还为click事件提供了一个事件处理程序。
问题是我正在尝试让“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);
}
但我还需要在click事件中启动“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);
}
}
}