2012-06-26 2 views
2

У меня есть динамически созданный DataGridView, который имеет действительный DataSource с одной строкой, привязанной к нему. Тем не менее, он возвращает мне 0, когда я делаю rowcount в DataGridView.Datagridview rowcount показывает 0, даже если существует допустимый источник данных

dgResult.DataSource = resultDt; // a datatable containing one row 
flowLayoutPanel.Controls.Add(dgResult); 
int rows = dgResult.Rows.Count; // returning 0 always! 

Может кто-нибудь, пожалуйста, скажите мне, где я, возможно, ошибаюсь?

ответ

5

Я нашел проблему. Я отобразил сетку на вкладке, которая не была выбрана. Если сетка не видна, она не вызывает строковое событие (которое является странным!) Durnig привязки данных. Я выбрал вкладку, прежде чем делать привязку данных, и сработала строка.

+0

Я сталкиваюсь с той же проблемой, я показываю datagrid в tablelayout, может ли сказать мне способ ее решения. – Mogli

+0

как вы это сделали, пожалуйста, позвольте нам теперь, что мой сетчатый вид находится на вкладке и возвращает 1 всегда подсчет строк, как подсчитывать строки gridview, которые присутствуют вTABS –

2

Используйте этот код вместо:

BindingSource bindingSource = new BindingSource(); 
bindingSource.DataSource = resultDt; 

dgResult.DataSource = bindingSource; 
flowLayoutPanel.Controls.Add(dgResult); 

var c = dgResult.Rows.Count; 

Связующий источник, что отвечает за синхронизацию данных с контролем. Вы хотите использовать его, вместо того, чтобы пытаться назначить таблицу непосредственно элементу управления.

+0

К сожалению, это не исправило проблему. – naspras

+0

Мое предположение заключается в том, что вы каким-то образом избавляетесь от своих данных, пока они не связаны. Опубликуйте свой код, который заполняет данные, и я посмотрю. Убедитесь, что вы не указали строку соединения и включили свои объявления, чтобы я мог взглянуть на область переменных. – KreepN

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