公共静态对象引用未设置错误
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 是填充?以上是关于公共静态对象引用未设置错误的主要内容,如果未能解决你的问题,请参考以下文章