我把xml文件读入到dataset中作为DataGrid的数据源。实际应用中需要读入不同的xml文件(架构相同)到dataset中。每次读一个新的xml文件之前,先把dataset清空掉,然后再把DataGrid的DataSource设置为这个dataset。程序中我要用到DataRowView drv = (DataRowView) this.BindingContext[this.dataGrid1.DataSource].Current这条语句获取数据源当前记录,进而得到它对应的DataRow,再取出它某个字段的值。现在问题是这样的:导入第一个xml文件的时候,上述语句能正常工作;而导入第二个xml文件之后,执行到这条语句就会抛出一个InvalidCastException,指定的类型转换无效。这是怎么回事呢?为什么第一个xml文件导入后运行正常,之后就不行了?
所涉及的代码如下:
private void btnSubmitChanges_Click(object sender, System.EventArgs e) {
string constName = null;
if ( this.dataSet1.Tables.Count != 0 && this.dataSet1.Tables["Const"].Rows.Count != 0) {
DataRow dataRow = GetCurrentDataRow();
constName = dataRow["ConstName",DataRowVersion.Current].ToString(); //...
}
} private DataRowView GetCurrentDataRowView(){
DataRowView drv = null;
try{
drv = (DataRowView) this.BindingContext[this.dataGrid1.DataSource].Current;
}catch(InvalidCastException e){
//... }finally{
}
return drv; } private DataRow GetCurrentDataRow( ){
DataRow dr = null;
dr = GetCurrentDataRowView().Row;
return dr;
}
所涉及的代码如下:
private void btnSubmitChanges_Click(object sender, System.EventArgs e) {
string constName = null;
if ( this.dataSet1.Tables.Count != 0 && this.dataSet1.Tables["Const"].Rows.Count != 0) {
DataRow dataRow = GetCurrentDataRow();
constName = dataRow["ConstName",DataRowVersion.Current].ToString(); //...
}
} private DataRowView GetCurrentDataRowView(){
DataRowView drv = null;
try{
drv = (DataRowView) this.BindingContext[this.dataGrid1.DataSource].Current;
}catch(InvalidCastException e){
//... }finally{
}
return drv; } private DataRow GetCurrentDataRow( ){
DataRow dr = null;
dr = GetCurrentDataRowView().Row;
return dr;
}
谢谢_jfeng(静心)的提醒。