公共静态对象引用未设置错误

Posted

技术标签:

【中文标题】公共静态对象引用未设置错误【英文标题】:public static Object reference not set error 【发布时间】:2020-03-20 12:15:45 【问题描述】:

问题:我有一个gridview 可供参考。但是,当我尝试引用它时,我得到了一个错误。

错误:

System.NullReferenceException: '对象引用未设置为 对象的实例。'

gridname 为空。

main.aspx.cs

namespace WebApplication1

    public partial class About : Page
    


    protected void Page_Load(object sender, EventArgs e)
    
        DataTable dt = datagridpopulate.Main("supplier", 0, null);
        GridView1.DataSource = dt;
        GridView1.DataBind();
    

奇怪的地方: 这是昨天工作的,我做了一些更改来清理我的代码,现在我无法弄清楚我所做的更改导致它停止工作

补充说明: 我试图将控件作为字符串打印到我拥有的弹出窗口函数中。 (pop_up.main(GridView1.ToString());) 但它仍然声明其为空。

非常感谢您的帮助:)

---- 错误缩小到: 好的,这导致了错误: public static global::System.Web.UI.WebControls.GridView GridView1; 它在以下情况下起作用: protected global::System.Web.UI.WebControls.GridView GridView1;

问题是我需要从其他类文件访问控件。所以它需要是公共静态的。如何让它保持公共静态并在没有错误的情况下使用对象引用?

【问题讨论】:

您是否尝试过调试代码以检查所有参数是否正确传递给您的datagridpopulate.Main 函数?从它的外观来看,您的函数没有向您的 DataTable 提供任何数据。 嘿,是的。我试图在弹出窗口中打印控件。 pop_up.main(GridView1.ToString());但是它仍然说它的未设置/为空。所以它与 dt 无关 我更新了问题以反映这一点 试试这个:pop_up.main(Convert.ToString(GridView1)); 看看你有什么价值 嗯,没有错误。弹出窗口出现,但它是空白的。我不确定这表明了什么。 【参考方案1】:

尝试删除关于。

Create_P_O_functions.populatedatagrid(About.GridView1, "supplier", 0, null);

Create_P_O_functions.populatedatagrid(GridView1, "supplier", 0, null);

您的 GridView 在上面创建了两个链接。我想和你一样,GridView 还没有出现在关于页面上。

【讨论】:

我删除了它。但是它并没有解决它 我将函数放在 page_load 中以帮助找出问题所在。我得到了同样的错误。我已经更新了我的问题以反映这一点。 尝试删除你的函数的静态 我更新为实际上没有使用该静态函数,但我仍然收到错误 大声笑,使用您编辑的代码,错误在哪里抛出?在 GridView1.DataBind() 上; ?你的 dt 是填充?

以上是关于公共静态对象引用未设置错误的主要内容,如果未能解决你的问题,请参考以下文章

对象引用未设置为对象的实例...错误?

未将对象引用设置到对象的实例

Unity C# NullReferenceException:对象引用未设置为对象的实例

C#连接数据库出现未将对象引用实例

未将对象引用设置到对象的实例

Ldap连接抛出对象引用未设置为对象错误的实例