从datatable行获取datagridview行

时间:2015-07-29 23:58:13

标签: c# datagridview

所以我发现可以获取datagridview行的绑定数据表行,但是,我正在寻找相反的方法。我有以下工作代码,将数据表行排序为按日期字段排序的数组。然后,我根据可用的数量执行一些逻辑来填充值。当可用数量小于所需数量时,我想为数据网格行着色以让用户知道情况。此时如何引用正确的datagridview行?

更新清晰度:这是一个使用datagridview的winform。显示的代码位于“全部匹配”按钮上。其目的是匹配数量必需单元格的数量到转移值,直到行的项目的可用数量。

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
}

1 个答案:

答案 0 :(得分:0)

据我了解,您使用的是WinForms。您可能使用DataGridView来显示数据。

最适合您的解决方案是创建自定义单元格模板。

例如,您可以继承DataGridViewTextBoxCell,并重写OnPaint方法。 OnPaint方法的参数中有'rowIndex'和'value'。

通过这种方式,您的模板将能够考虑数据绑定项并相应地绘制单元格。

另一种解决方案是每次数据更改时手动更新行颜色。 这是一个example