none
C#winfrom 当DataGridView.DataSource = this.ds.Tables[0]是提示{“未将对象引用设置到对象的实例”}贴代码!!急!在线等 RRS feed

  • 问题

  • 贴代码:namespace aa
    {
        public partial class Getsp : Form
        {
           public DataSet ds = new DataSet();
            public Getsp()
            {
                InitializeComponent();
            }
            public Getsp(string sql)
            {
               this.ds = DAL.Pubmethod.GetDataSet(sql);
                if (this.ds == null || this.ds.Tables.Count == 0 || this.ds.Tables[0].Rows.Count == 0)
                {
                    MessageBox.Show("未检索到数据!", "提示");
                    this.Close();
                }
                else
                     try
                     {
                         MessageBox.Show(this.ds.Tables[0].Rows.Count.ToString());
                        // spmx.AutoGenerateColumns = false;
                         //dataGridView1.AutoGenerateColumns = false;
                        // dataGridView1.DataSource = dataSet1.Tables[0];  
                         this.spmx.Refresh();
                         this.spmx.DataSource = this.ds.Tables[0]; ///运行到这儿就开始报错!!
                     }
                     catch (Exception e)
                     {
                         MessageBox.Show("信息错误!","提示");
                         throw(e);
                     }
            }
    2015年7月10日 2:22

答案

  • 你好,noodiewm

    问题在于你的Getsp(string sql) 方法没有执行 InitializeComponent 方法。所以页面上的组件没有被初始化,才会报上面的错误。

    解决方法有两种

    1. 在Getsp(string sql)方法第一行执行 InitializeComponent 这个方法

    public Getsp(string sql)
     {
        InitializeComponent();
        this.ds...
        ....
    }

    2. 继承Getsp() 方法:

    public Getsp(string sql) : this()
     {
        this.ds = ...
        ...
    }


    希望我的答案能帮助更多的人。



    2015年7月10日 2:44

全部回复

  • 你好,noodiewm

    问题在于你的Getsp(string sql) 方法没有执行 InitializeComponent 方法。所以页面上的组件没有被初始化,才会报上面的错误。

    解决方法有两种

    1. 在Getsp(string sql)方法第一行执行 InitializeComponent 这个方法

    public Getsp(string sql)
     {
        InitializeComponent();
        this.ds...
        ....
    }

    2. 继承Getsp() 方法:

    public Getsp(string sql) : this()
     {
        this.ds = ...
        ...
    }


    希望我的答案能帮助更多的人。



    2015年7月10日 2:44
  • 啊啊啊啊   太感谢您了!,昨晚改了点东西 本来这个构造器里是写了这个方法的 但是之后我把这个构造器改成static方法测试一个问题,所以删除了这个初始化方法,测试完之后又改成构造器,忘记加上这个方法了。。。。。导致昨晚被这个bug搞到3点多都没解决。。。。。大意啊!!太感谢您了
    2015年7月10日 2:53
  • 不客气。请标记答案,方便自己和其他人更快的查看,谢谢。

    希望我的答案能帮助更多的人。

    2015年7月10日 3:27