我的对象列表视图中有五列,并且我想更改项目5的文本(即列表视图中的子装配字段),因此我正在使用格式单元格事件。但是不管我做什么,由于某种原因,我只更改列位置0的项目文本,我也不是为什么。
我正在使用对象列表视图http://objectlistview.sourceforge.net/cs/features.html#custom-row-and-cell-formatting
private void olvData_FormatCell(object sender, FormatCellEventArgs e)
{
List<AllStockQty_Result> result = new List<AllStockQty_Result>();
if (componentsCCList.Count <= 0)
{
return;
}
// If an item is sub assembled we want to check the database
// for the qty already saved against this item.
if (e.ColumnIndex == 5)
{
SubAssembledTrackers _subAssembledQty = new SubAssembledTrackers();
_subAssembledQty.Query.Filters.Add(new Sage.ObjectStore.Filter(SubAssembledTracker.FIELD_PRODUCTIONPLANITEM, _selectedItem.ProductionPlanItemID));
if (_subAssembledQty.IsEmpty == false && _subAssembledQty.Count >= 1)
{
var first = _subAssembledQty.First;
e.Item.Text = first.QtySubAssembled.ToString();
}
}
}
答案 0 :(得分:0)
我知道这是一个老问题,但是...
它正在更改列0中的文本,因为e.Item.Text = ...
就是这样做的。 Text
的{{1}}实际上是子项0的文本。
相反,您可能是说Item
。这样只会更改第5列的单元格(在这种情况下)。
但是
您真的不想在e.SubItem.Text = ...
事件中进行任何数据库访问。可以叫很多!
最好为第5列提供一个自定义FormatCell
,该自定义AspectGetter
可以在加载数据后进行一次数据库访问。
更好的是,更改DataListView
基础的SQL以在数据库服务器上计算正确的值!