无论选择什么索引,“对象列表”视图始终设置第一项

时间:2018-07-15 23:03:26

标签: c# objectlistview

我的对象列表视图中有五列,并且我想更改项目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();

                }
           }
}

1 个答案:

答案 0 :(得分:0)

我知道这是一个老问题,但是...

它正在更改列0中的文本,因为e.Item.Text = ...就是这样做的。 Text的{​​{1}}实际上是子项0的文本。

相反,您可能是说Item。这样只会更改第5列的单元格(在这种情况下)。

但是

您真的不想在e.SubItem.Text = ...事件中进行任何数据库访问。可以叫很多!

最好为第5列提供一个自定义FormatCell,该自定义AspectGetter可以在加载数据后进行一次数据库访问。

更好的是,更改DataListView基础的SQL以在数据库服务器上计算正确的值!