Выделение строк datagridviewC#

Место общения программистов C#
Ответить
Anonymous
 Выделение строк datagridview

Сообщение Anonymous »

У меня есть представление datagridview в моем приложении Winforms с .NET 8. Я хочу выделить некоторые строки на основе текущей роли пользователя и запроса следующего уровня. Я пишу эту функцию и вызываю ее в форме load.
Но в конце все строки белые. Я уверен насчет значения роли пользователя (1, int32) и значения следующего уровня.

Код: Выделить всё

private void LoadPendingRequests()
{
DataTable dt = new DataTable();

using (SqlConnection con = new SqlConnection(connectionDB))
{
con.Open();

// 1. Fetch requests with next pending level
string query = @"SELECT r.RequestID, r.CreatedDate,
u.FullName AS Requestor, r.Status,
(SELECT MIN([Level])
FROM Approvals a
WHERE a.RequestID = r.RequestID
AND a.Status = 'Pending') AS NextLevel
FROM Requests r
JOIN Users u ON r.RequestorID = u.UserID
WHERE r.Status = 'Pending'";

SqlDataAdapter da = new SqlDataAdapter(query, con);
da.Fill(dt);

// 2. Bind DataGridView
dgvRequests.DataSource = dt;
dgvRequests.AllowUserToAddRows = false; // prevent new row
dgvRequests.Refresh();

// 3. Check column exists
if (!dgvRequests.Columns.Contains("NextLevel"))
{
MessageBox.Show("NextLevel column not found!");
return;
}

int nextLevelIndex = dgvRequests.Columns["NextLevel"].Index;

// 4. Highlight rows using UserSession.ApprovalLevels
foreach (DataGridViewRow row in dgvRequests.Rows)
{
if (row.IsNewRow)
continue;

row.DefaultCellStyle.BackColor = Color.White;

object cellValue = row.Cells[nextLevelIndex].Value;

if (cellValue != null && cellValue != DBNull.Value)
{
int nextLevel = Convert.ToInt32(cellValue);

// Highlight if user can approve this level
if (UserSession.ApprovalLevels.Contains(nextLevel))
{
row.DefaultCellStyle.BackColor = Color.LightGreen;
}

System.Diagnostics.Debug.WriteLine($"NextLevel={nextLevel}, Highlight={UserSession.ApprovalLevels.Contains(nextLevel)}");
}
}

dgvRequests.Refresh();
}
}
Я уверен, что уровень верен и в datagridview есть данные с этим уровнем:
Изображение


Подробнее здесь: https://stackoverflow.com/questions/798 ... dview-rows
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»