所以我发现可以获取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
}
答案 0 :(得分:0)
据我了解,您使用的是WinForms。您可能使用DataGridView来显示数据。
最适合您的解决方案是创建自定义单元格模板。
例如,您可以继承DataGridViewTextBoxCell,并重写OnPaint方法。 OnPaint方法的参数中有'rowIndex'和'value'。
通过这种方式,您的模板将能够考虑数据绑定项并相应地绘制单元格。
另一种解决方案是每次数据更改时手动更新行颜色。 这是一个example。