我有一段代码,是从服务器上读取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失败了,问题是,问题在哪里?为什么会引起这个错误?如何改正呢?
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失败了,问题是,问题在哪里?为什么会引起这个错误?如何改正呢?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货