2015-07-29 3 views
0

Итак, я обнаружил, что можно получить связанную строку datatable для строки datagridview, однако я пытаюсь сделать обратное. У меня есть следующий рабочий код, который сортирует строки данных в массиве, отсортированном по дате. Затем я выполняю некоторую логику, чтобы заполнить значение, основанное на количестве доступного количества. Когда доступное количество меньше требуемого количества, я хочу покрасить строку datagrid, чтобы пользователь знал о ситуации. Как я могу обратиться к правильной строке datagridview в этот момент?Получить строку datagridview из строки datatable

Обновление для ясности: это winform с использованием datagridview. Показанный код находится на кнопке «Match All». Его цель - сопоставить значение Qty для переноса с ячейки Qty Required до доступного количества для элемента строки.

Dictionary<string, float> availableQtys = new Dictionary<string, float>(); 

DataView view = new DataView(dtStaged); 
DataTable distinctItems = view.ToTable(true, "Item"); 

for (int i = 0; i < distinctItems.Rows.Count; i++) 
{ 
    availableQtys[distinctItems.Rows[i].Field<string>(0)] = 
      Controller.Instance.GetAvailableQty(distinctItems.Rows[i].Field<string>(0), ddl_SourceLocation.SelectedValue.ToString()); 
} 

DataRow[] rowList = dtStaged.Select("", "Req Ship ASC"); 

foreach (DataRow row in rowList) 
{ 
    if (ddl_SourceLocation.SelectedValue.ToString().Trim() == row["Dest Site"].ToString().Trim()) 
    continue; 

    if (availableQtys[row["Item"].ToString()] < Convert.ToSingle(row["Qty Required"])) 
    { 
     row["Qty to Transfer"] = availableQtys[row["Item"].ToString()]; 
     availableQtys[row["Item"].ToString()] = 0.0f; 
     warnUser = true; 

     // HERE I want to set the color of the matching data grid row 
    } 

    // some other stuff 
} 

ответ

0

Насколько я понимаю, вы используете WinForms. И вы, вероятно, используете DataGridView для отображения ваших данных.

Лучшим решением для вас является создание пользовательского шаблона ячейки.

Например, вы можете наследовать DataGridViewTextBoxCell и переопределить метод OnPaint. В параметрах метода OnPaint есть «rowIndex» и «value».

Таким образом, ваш шаблон сможет рассмотреть связанные данные и соответствующим образом покрасить ячейку.

Другое решение - вручную обновлять цвет строк каждый раз, когда ваши данные изменяются. Адрес example.

+0

Вы утверждаете, что мое точное желание - получение связанной строки datagridview из строки данных - невозможно? – CodenameCain

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