Get datagridview row from datatable row

本文关键字:row datatable from Get datagridview | 更新日期: 2023-09-27 18:05:22

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

为清晰更新:这是一个使用datagridview的窗体。代码显示在"匹配全部"按钮上。其目的是将"所需数量"单元格中的"要传输的数量"值与该行的"项目"的可用数量相匹配。

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
}

Get datagridview row from datatable row

据我所知,您使用的是WinForms。你可能会使用DataGridView来显示你的数据。

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

例如你可以继承DataGridViewTextBoxCell,并覆盖OnPaint方法。OnPaint方法的参数中有'rowIndex'和'value'。

这样,你的模板将能够考虑数据绑定项并相应地绘制单元格。

另一个解决方案是每次数据更改时手动更新行颜色。下面是一个例子: