在WinForm项目中,我使用Andrew Davey's BindingListView implementation作为源的jQuery
数据网格视图。我用它来使用其他控件过滤网格。在我的演示者类中,我希望能够遍历当前已过滤的产品并将其更新为新值。
然而,似乎BindingListView没有任何方法来获取已过滤的List,因此以下代码只返回所有产品,而不仅仅是网格中可见的产品。
是否有办法不必遍历DataGridView行,以获取可见的产品?
BindingListView<Product>
编辑:
我直接绑定到DataGridView数据源,即
foreach (Product product in bindingListView)
{
UpdateViewCellValue(newAmount, columnIndex, product);
model.UpdateReplenishAmount(product.ID, newAmount);
}
答案 0 :(得分:0)
要获取当前可见的行,我已将以下方法添加到我的视图中
public List<int> GetCurrentlyVisibleRowProductIDs()
{
List<int> productIDs = new List<int>();
foreach (DataGridViewRow row in dgvReplenish.Rows)
{
productIDs.Add((int)row.Cells[(int)ProductColumnIndex.ID].Value);
}
return productIDs;
}
然后从我的演示者那里调用它,在模型中查找匹配的产品
private IList<Product> VisibleProducts()
{
var productsIDs = view.GetCurrentlyVisibleRowProductIDs();
return model.GetProductsByID(productsIDs);
}