【问题标题】:C# WPF datagrid find and delete rowC# WPF datagrid 查找和删除行
【发布时间】:2020-03-02 04:15:59
【问题描述】:

帮帮我。我有textbox 用于查找和datagrid 用于查找。我想在第一列中搜索与从textbox 导入的数据相似的行并将其删除。我该怎么办?

感谢您的帮助。新月好运

我尝试的代码:

for (int i = 0; i < datagrid.Items.Count; i++)
{
            TextBlock cellValue = datagrid.Columns[i].GetCellContent(datagrid.Items[0]) as TextBlock;
            string cellValue2 = cellValue.Text;
            if (cellValue2 == textbox.text) // check the search_string is present in the row of ColumnName
            {
                datagrid.Items.RemoveAt(i);
            }
        }

【问题讨论】:

  • 您可以/应该删除 ViewModel 中的绑定数据行。

标签: c# wpf datagrid find


【解决方案1】:

这段代码应该可以工作:

for (int i = datagrid.Items.Count-1; i >= 0; i--)
{
    var cellValue = datagrid.Columns[0].GetCellContent(datagrid.Items[i]) as TextBlock;
    string cellValue2 = cellValue.Text;
    if (cellValue2 == textbox.Text) // check the search_string is present in the row of ColumnName
    {
        //For the case you set an ItemsSource:
        (datagrid.ItemsSource as IList)?.Remove(datagrid.Items[i]);
        //For the case you add Items directly:
        try
        {
            datagrid.Items.Remove(datagrid.Items[i]);
        }
        catch (Exception)
        {
        }
    }
}
datagrid.Items.Refresh();

别忘了刷新网格:datagrid.Items.Refresh()

【讨论】:

  • 211/5000 我试过这段代码。但它不能工作。这段代码有两个问题。 (datagrid.ItemsSource 作为 IList)?删除(_dgTest.Items [i]); 1 / IList)?和 2 / _dgTest 你能帮帮我吗?非常感谢。
  • _dgTest 只是一个错字使用 datagrid 代替。
  • 您的DataGridItemsSource 是什么?
  • (datagrid.ItemsSource 作为 IList)? ......我还是不明白。你能描述一下吗?
  • 哦,是的。我尝试//对于您直接添加项目的情况,它可以工作。但它删除了一行。如果我有超过 2 行的结果文本框值,它只会删除 1 行。我希望它删除与文本框值具有相同结果的所有行。我能怎么做。感谢您的帮助。
猜你喜欢
  • 2023-03-24
  • 2018-07-09
  • 2012-09-19
  • 2012-05-20
  • 1970-01-01
  • 2014-08-22
  • 1970-01-01
  • 2011-09-17
  • 1970-01-01
相关资源
最近更新 更多