В C# проекте WinForms я перебираю DataSridView DataGridView как DataTable и проверяю исходную базу данных и определяю, является ли значение в одном из столбцов допустимым. Если это является допустимым значением, я хочу его скрыть, поэтому я получаю только DGV, показывающий строки с недопустимыми значениями.
Вот псевдо-код того, что у меня есть.
private void btnValidate_Click(object sender, EventArgs e)
{
DataTable dt = ((DataTable)dgvMyDataGridView.DataSource);
int intRowIndex;
for (intRowIndex = 0; intRowIndex <= dt.Rows.Count - 1; intRowIndex++)
{
DataRow drValidationRow = dt.Rows[intRowIndex];
string strNewValue = drValidationRow[5].ToString();
// Get the current row's db record ID as a string for the db query
int intCurrDgvRowId = int.Parse(dgvMyDataGridView[0, intRowIndex].Value.ToString());
// Determine if we need to show or hide the DGV's row
bool bNewValueIsValid = <db check for valid strNewValue>
if (bNewValueIsValid)
{
/*
* Hide the DGV row corresponding to the DT row ID
*/
}
}
}
Я попробовал то, что мне кажется наиболее логичным:
dgvmyDataGridView.Rows[intRowIndex].Visible = false;
Но когда я запускаю это, я получаю эту ошибку:
System.InvalidOperationException: 'Row associated with the currency manager's position cannot be made invisible.'
Я не могу просто сделать что-то вроде drValidationRow.Visible = false
, так как для этого нет свойства Visible
, я думаю, потому что строка из DataTable, а не DGV.
Как мне сделать sh это?