在页面上查找一个asp控件但返回NULL

发布于 2024-12-01 22:16:58 字数 907 浏览 3 评论 0原文

,嗨,

在我的 .aspx 页面上,我有一个 id =“dataGrid1”的 dataGrid,我需要在 app_code 中的类上编辑该控件。

这就是我在课堂上所做的:

if (HttpContext.Current.Handler is Page)
        {
            Page currentPage = (Page)HttpContext.Current.Handler;
            if (currentPage != null)
            {                  
                Control ctrl = FindControlRecursive(currentPage, "dataGrid1");
            }
        }

然后我有这个递归函数:

public static Control FindControlRecursive(Control root, string id)
    {
        if (root.ID == id)
        {
            return root;
        }

        foreach (Control c in root.Controls)
        {
            Control t = FindControlRecursive(c, id);
            if (t != null)
            {
                return t;
            }
        }

        return null;
    }

但由于某种原因它找不到我的控件并返回 null。

有谁可以帮忙吗???

谢谢

,HI,

On my .aspx page i have a dataGrid with id = "dataGrid1", I need to edit that control for on class in the app_code.

This is what i am doing in my class:

if (HttpContext.Current.Handler is Page)
        {
            Page currentPage = (Page)HttpContext.Current.Handler;
            if (currentPage != null)
            {                  
                Control ctrl = FindControlRecursive(currentPage, "dataGrid1");
            }
        }

Then i have this recursive function:

public static Control FindControlRecursive(Control root, string id)
    {
        if (root.ID == id)
        {
            return root;
        }

        foreach (Control c in root.Controls)
        {
            Control t = FindControlRecursive(c, id);
            if (t != null)
            {
                return t;
            }
        }

        return null;
    }

But for some reason it doesnt find my control and returns null.

Can any one help???

Thank you

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

剩一世无双 2024-12-08 22:16:58

由于您已经获取了页面的实例,请尝试添加将返回网格的公共方法,然后使用这样的代码:

Page currentPage = (Page)HttpContext.Current.Handler;
if (currentPage != null)
{     
    DataGrid myGrid = (currentPage as YourClassName).GetGrid();
    ...
}

另外,您的代码的上下文是什么?什么时候执行?

Since you're already getting instance of the page, try adding public method that will return the Grid, then have such code:

Page currentPage = (Page)HttpContext.Current.Handler;
if (currentPage != null)
{     
    DataGrid myGrid = (currentPage as YourClassName).GetGrid();
    ...
}

Also, what is the context of your code? When does it get executed?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文