我有一段代码,是从服务器上读取XML字符串,然后作为数据源显示在一个datagrideview中,执行很多次都没有问题,后来添加了一个按钮列,作为删除之用,问题来了,如果点击删除按钮(添加到列里了),即使不删除,再点查询按钮(btSearch)时,也查询代码也会出错:未将对象引用设置到对象实例,看来是new dataview失败了,问题是,问题在哪里?为什么会引起这个错误?如何改正呢?查询代码如下: 
       private void btSearch_Click(object sender, EventArgs e)
        {
            TextReader aReader = null;
            try
            {
                aReader = new StringReader(client.GetAll("sudisoft"));
            }
            catch
            {
                MessageBox.Show("服务器响应失败!");
                return;
            }
            DataSet ds = new DataSet();
            ds.ReadXml(aReader);
            try
            {
                gvList.DataSource = new DataView(ds.Tables[0]);
            }
            catch (Exception eeee)
            {
                MessageBox.Show(eeee.Message);
            }
            ds.Dispose();
            aReader.Dispose();
        }
删除操作,代码如下:
        private void gvList_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            string strRet = "";
            if (e.RowIndex < 0)
                return;
            if (e.ColumnIndex == 3)
            {
                if (MessageBox.Show("你确信要删除该信息吗?", "删除确认", MessageBoxButtons.YesNo) == DialogResult.Yes)
                {
                    long nID = Int64.Parse(gvList.Rows[e.RowIndex].Cells["id"].Value.ToString());
                    try
                    {
                        strRet = client.DelMsg(nID);
                    }
                    catch
                    {
                        MessageBox.Show("数据库操作错误,删除失败!");
                    }
                    if (strRet == "")
                    {
                        gvList.Rows.RemoveAt(e.RowIndex);
                    }
                    else
                    {
                        MessageBox.Show("服务器操作错误,错误信息:" + strRet);
                    }
                }
            }
        }问题来了,如果点击删除按钮(添加到列里了),即使不删除,再点查询按钮(btSearch)时,也查询代码也会出错:未将对象引用设置到对象实例,看来是new dataview失败了,问题是,问题在哪里?为什么会引起这个错误?如何改正呢?

解决方案 »

  1.   

    补充, client是一个wcf代理类,在窗口的init时间里初始化好了的,包括client.getAll() client.DelMsg()都是调用了服务器上的方法。不过,我检测过,getAll返回的XMl字符串没有问题
      

  2.   

    没有人知道问题在哪吗? help , please
      

  3.   

    经过检测,从服务器读回xml字符串没有问题。奇怪的地方在于,那个删除的操作 风马牛不相及啊