2011-08-23 151 views
0

希望这个清楚。app_code,在aspx页面上修改元素

我是新来的这一切。

我有一个asp.net和C#项目,在App_Code我有一个类userInterface.cs,我需要做的是如下因素:

那堂课我需要得到某一页

NewPage.aspx

,并修改网页上的一些ASP的元素。

目前,我有这样的:

Page p = (Page)HttpContext.Current.Handler;  

不知道我需要为了得到该页面还有什么。我想要的页面被称为NewPage.aspx。

我会赞赏任何答案。

甚至谷歌为了找到将是伟大的。我不知道从哪里开始......

+1

是您的项目网站或Web应用程序? –

+0

@ Miroprocessor,网站 – Ovi

回答

0

您可能可以通过HttpContext访问该页面,但这可能不是一个好方法。正如其他海报所指出的,只需使用一种方法并传递给控件即可。

虽则回答你的问题,你可以尝试这样的事:

if (HttpContext.Current.Handler is Page) 
{ 
    Page currentPage = (Page)HttpContext.Current.Handler; 
    if (currentPage != null) 
    { 
     //depending on where the control is located, you may need to use recursion 
     GridView gridView = currentPage.FindControl("GridView1"); 
    } 
} 

我必须重申,这可能不是,虽然一个很好的办法,对工作的原因众多。我确实希望有人回答你的实际问题,所以它就是这样。

+0

谢谢,我正在寻找这个答案,那是我需要做的。但是在我做了上面的“gridView”之后,我的页面上就有了这个控件。任何想法为什么它不工作?我会很感激一个快速的答案。 – Ovi

+0

这是什么意思:'//根据控件所在的位置,您可能需要使用递归'我的控件位于当我执行页面时发现的aspx页'currentPage =(Page)HttpContext.Current。处理器;” – Ovi

+0

this'GridView gridView = currentPage.FindControl(“GridView1”);'返回null – Ovi

1

我认为你不能在你的网站上做到这一点,但你可以在你的App_Code文件中创建一个方法,你可以从你的页面调用并将控制权交给这种方法从那里访问它。

更新

我你App_Code文件

using System.Web.UI.WebControls; 

public static void AddColumn(ref GridView gv) 
    { 
     BoundField field1=new BoundField(); 
     field1.HeaderText="Header Text"; 
     field1.DataField = "DataFieldName"; 
     gv.Columns.Add(field1); 


     BoundField field2 = new BoundField(); 
     field2.HeaderText = "Header Text"; 
     field2.DataField = "DataFieldName"; 
     gv.Columns.Add(field2); 
    } 

在你的页面

Test.AddColumn(ref MyGridView); 
MyGridView.DataSource = names;// assign your datasource here 
MyGridView.DataBind(); 
+0

谢谢,你能告诉我如何做到这一点? – Ovi

+0

然后当我这样做时,我可以修改控件?我的控件是一个gridView,在添加app_code类中的列后,我需要用页面上的新信息重新打印网格。 – Ovi

+0

所以你应该通过引用 –

0

如果你正试图从你的App_Code文件类可以访问一个.aspx页面上,有你的代码有问题。你不应该这样做。 App_Code中的类用于提供.aspx页面,而不是反向。例如,在App_Code中,您正在维护实用程序类。

+0

你不能使用这个“Page p =(Page HttpContext.Current.Handler;”得到它,然后做一些像这样的投射:NewPage p1 =(NewPage)p;? – Ovi

2

您可以在App_Code类中创建方法,并在您的代码后面的任何事件中调用此方法。您可以将您的GridView或完整的页面传递给此方法。

这是您的Page_Load事件,位于您的代码隐藏文件后面。

protected void Page_Load(object sender, EventArgs e) 
{ 
    UserInterface.UpdateGrid(ref GridView1); 
} 

这是位于.cs文件中的静态方法。

public static void UpdateGrid(ref GridView view) 
{ 
    // update your GridView here 
} 
0

如果内容页面(.aspx)在主页面下被绑定。您需要考虑在内容页面中查找控件的父控件。例如,如果主页面包含内容占位符,并且在该页面内您是绑定页面,则必须首先找到内容占位符。

Page p = HttpContext.Current.Handler as Page; 
Label lbl = p.Form.FindControl("ContentPlaceHolder1").FindControl("UpdatePanel1").FindControl("lblTest") as Label 

在编译响应请求时,ASP.Net总是通过主页面文件(如果有)到达内容页面。因此,在从类中的任何.aspx文件请求页面控件时,必须首先在主页面内找到父控件。