确定DataGridView DataSource的正确方法是C#中的DataTable或DataView

时间:2014-10-16 08:49:12

标签: c# datagridview

确定 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 { }
                    }

3 个答案:

答案 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;
           }