2016-06-02 3 views
-1

У меня есть модуль, который импортирует Excel File и отображает его содержимое в DataGridView Object. В то же время у меня есть модуль, который будет экспортировать содержимое DataGridView ObjectDataSource as a DataTable в Excel File.проверить, есть ли DataGridView DataSource

Как я могу проверить, имеет ли DataGridView источник данных, не выполняя условие if(dataGridView1.Rows.Count == 0){}.

Это потому, что я заметил, что даже если пользователь импортирует или открывает пустой Excel File, DataGridView Object все еще отображает один Column.

поэтому я хочу попробовать и проверить, если DataGridView Object имеет DataSource

им ищет что-то вроде кода

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 - сейчас я использую этот код для фильтрации пуст DataSources:

предполагающие, что:

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

и что dataGridView1 и dataGridView3 не имеет DataSource или DataGridView Object пуст. я запустить код, приведенный ниже, чтобы отфильтровать и удалить те 2 пустые 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); 
    } 

с этим кодом, я могу отфильтровать все другие пустые 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 еще не assigend будет null Таким образом, вы можете проверить их, как следующее:

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

Да, но как я могу проверить, находится ли 'DataTable' /' DataSource' в пределах словаря? потому что мой код сначала компилирует весь «DataSource» DataGridView Object' в один «Список Объект», а затем передает «Объект списка» в «Метод», который проверяет и фильтрует пустые «DataTables» из «Объекта списка» – TheQuestioner

Смежные вопросы