在Datagrid中搜索并滚动&选择新添加的项目

时间:2013-03-02 15:50:58

标签: c# wpf telerik

我正在使用Telerik Datagrid控件来显示100条记录。在我的应用程序中,用户选择他们想要编辑的内容,并使用表单允许用户更新记录。 同样,如果他们想要添加新记录,他们会点击“添加”,然后会显示该表单的空白版本。

我没有直接绑定到数据源。我通过将Itemsource设置为我的记录列表来向网格提供数据。

当用户编辑了一条记录时,我可以很容易地滚动并选择编辑过的记录:

            //find row index of selected item
            var lastRowUpdated = RadGridAssetTable.Items.IndexOf(this.RadGridAssetTable.SelectedItem);

            // move to index following edit
            RadGridAssetTable.ScrollIndexIntoView(lastRowUpdated);
            RadGridAssetTable.SelectedItem = lastRowUpdated; 

但是,当我添加新记录时,我无法弄清楚如何以编程方式滚动并选择新添加的网格项。

实际上我想在网格行中搜索(隐藏)记录ID,在控件中选择行索引并滚动到它

似乎没有办法以编程方式在网格中搜索数据,有人可以指出如何执行此操作的正确方向吗?

此致

1 个答案:

答案 0 :(得分:0)

好的,所以我这样解决了。

 var lastRowUpdated = 0;
        var i = 0;

        if (_assetsavedData.AssetId == -1)
        {
            foreach (var rowItem in from object row in RadGridAssetTable.Items select row as AssetLinked)
            {
                Debug.WriteLine(rowItem.AssetItems.AssetCommonName);

                if (rowItem.AssetItems.AssetCommonName.Equals(_assetsavedData.AssetCommonName))
                {
                    lastRowUpdated = i;
                    Debug.WriteLine("found at " + i);
                    break;
                }

                i++;
            }
        }
        else
        {
            lastRowUpdated = RadGridAssetTable.Items.IndexOf(this.RadGridAssetTable.SelectedItem);
        }