确定 DataGridView DataSource DataTable 或 DataView 的正确方法是什么,以便此代码段
//data bind
myDataTable = getDataTableFromDataBase()
datagridview1.DataSource = myDataTable;
然后我尝试从DataGridView上面获取DataTable我做到了。
DataTable temp = (DataTable)(this.datagridview1.DataSource);
然后它给了我一个这样的错误,无法转换类型&System; System.Data.DataView'输入' System.Data.DataTable'
当我想从DataGridView获取数据源时,我做了这件令人讨厌的事情。 这是工作,但最好的方法是什么?
DataTable dt_update = new DataTable();
try
{
DataView dv = (DataView)(this.datagridview1.DataSource);
tempTable = (DataTable)dv.Table;
}
catch (InvalidCastException ex)
{
try
{
tempTable = (DataTable)datagridview1.DataSource;
}
catch { }
}
答案 0 :(得分:3)
试试这个
if(datagridview1.DataSource is DataTable)
{
dt_update = (DataTable)datagridview1.DataSource
}
else if (datagridview1.DataSource is DataView)
{
dt_update = (DataView)datagridview1.DataSource.Table
}
答案 1 :(得分:2)
单向,使用as
operator尝试投射它:
DataTable dtbl = datagridview1.DataSource as DataTable;
if(dtbl == null)
dtbl = (datagridview1.DataSource as DataView).Table;
tempTable = dtbl;
答案 2 :(得分:1)
试试这个:
try
{
DataTable dt_update = datagridview1.DataSource.GetType() == typeof(DataView) ? ((DataView)datagridview1.DataSource).Table : (DataTable)datagridview1.DataSource;
}
catch (Exception)
{
throw;
}