2016-06-02 15 views
-1

Excel Fileをインポートし、その内容をDataGridView Objectに表示するモジュールがあります。同時に、DataGridView ObjectDataSource as a DataTableの内容をExcel Fileにエクスポートするモジュールがあります。DataGridViewにデータソースがあるかどうかを確認する

if(dataGridView1.Rows.Count == 0){}条件を実行しないことによって、DataGridViewにデータソースがあるかどうかを確認する方法はありますか。

これは、ユーザーが空をインポートまたは開いてもExcel FileDataGridView Objectがまだ1つのColumnを表示していることに気付いたからです。

私はDataGridView Object

if(dataGridView1.DataSource == true) 
{ 
    // do something is DataSource if found or is bound 
} 
else 
{ 
    //do something is DataSource is not found or is not bound 
} 

EDITようなコードの何かを探してDataSource

イムを持っている場合は試してみて、確認したい理由です - 今私が空にフィルタリングするために、このコードを使用していますのためにデータソース:それを想定し

var dtList = new Dictionary<string, DataTable>() { 
    { "dataGridView1", (DataTable) (dataGridView1.DataSource) }, 
    { "dataGridView2", (DataTable) (dataGridView2.DataSource) }, 
    { "dataGridView3", (DataTable) (dataGridView3.DataSource) }, 
    { "dataGridView4", (DataTable) (dataGridView4.DataSource) } 
}; 

であり、dataGridView1dataGridView3にはDataSourceが含まれていないか、DataGridView Objectが空です。私はから他のすべての空のDataTableをフィルタリングすることができています、このコードで

//Filter and Remove empty DataTable(s) 
var remList = new List<string>(); 

    foreach(var dt in dtList) { 
     try { 
      var dump = dt.Value.GetType().ToString(); 
     } catch(Exception ex) { 
      remList.Add(dt.Key); 
     } 
    } 

    foreach(var rem in remList) { 
     dtList.Remove(rem); 
    } 

:私は空のものを2 DataTableをフィルタリングして除去するために以下のコードを実行します。しかしもちろん、私はこれよりも良い式を求めています。ええ、私はいくつかのヒントとコードを得ることができることを願っています。おかげ

答えて

1

私は空の行をエクスポート避けるためにDataGridViewに空の行を検証する書き込みコードをお勧めします。

DataSource~nullを検証することができますが、これは行数の検証とはどのように違うのか真剣に疑いがあります。

excelをインポートするときに空の行が追加されていることが記載されているので、空のDataGridviewをエクスポートしてこの検証を実行することを避けることができます。

DataTable source = dataGridView1.DataSource as DataTable; 
var emptyrows = source.AsEnumerable() 
         .All(r=> r.ItemArray.All(x=> x == DBNull.Value)); 

if(!emptyrows) 
{ 
    //export 
} 
+0

これは 'Linq'権利ですか? – TheQuestioner

+0

はい、正常なループに変更できます(必要な場合) –

0

DataSourceが、まだそれはあなたが以下のようにそれらを確認することができますnullなりますassigendされていない場合:

if(dataGridView1.DataSource == null) 
{ 
    // do something there is no assigned Datasource 
} 
else 
{ 
    //do something with the DataSource 
} 
+0

はい、しかし、 'DataTable' /' DataSource'が 'Dictionary Object'の中にあるのを確認するにはどうすればいいですか?私のコードは全ての 'DataGridViewオブジェクト'の 'DataSource'を一つの' List Object'にコンパイルするので 'List Object'を' Method'に渡して空オブジェクト 'DataTables'を' Listオブジェクト ' – TheQuestioner

関連する問題