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
}
据我所知,您使用的是WinForms。你可能会使用DataGridView来显示你的数据。
最好的解决方案是创建自定义单元格模板。
例如你可以继承DataGridViewTextBoxCell,并覆盖OnPaint方法。OnPaint方法的参数中有'rowIndex'和'value'。
这样,你的模板将能够考虑数据绑定项并相应地绘制单元格。
另一个解决方案是每次数据更改时手动更新行颜色。下面是一个例子: