RowFilter:dataGridView 行在编辑后消失

Posted

技术标签:

【中文标题】RowFilter:dataGridView 行在编辑后消失【英文标题】:RowFilter: dataGridView rows disappearing after edit 【发布时间】:2018-06-02 21:34:57 【问题描述】:

我有一个使用 RowFilter 填充的 dataGridView:

    private void ResultsFunc()
    
        ColumnToSearch = comboBox1.Text;

        if (textBox1.Text.Length == 0)
        
            ToSearchBy = listBox1.SelectedItem.ToString();
        
        else if (textBox1.Text.Length > 0)
        
            ToSearchBy = textBox1.Text;
        

        dt = aSH_ORDER_DBDataSet.ASH_PROD_ORDERS;
        dv = new DataView(dt);

        dv.RowFilter = ColumnToSearch + " = " + "'" + ToSearchBy + "'";

        dataGridView1.DataSource = dv;
    

当我在其中一个返回的行中编辑我搜索的参数时,它们会从 dataGridView 中消失,有没有办法阻止这种情况发生?

我希望在编辑值后仍能看到该行。

【问题讨论】:

你只在这个函数(resultsfunc)中填充gridview吗? @dan6657 不,我也在运行时用这个填充它:aSH_PROD_ORDERSTableAdapter.Fill(aSH_ORDER_DBDataSet.ASH_PROD_ORDERS); 我猜他们可能不会,但是这两个群体会相互抵消吗?您的 resultsFunc 是否也从页面加载运行? 是的,如果我运行 Resultsfunc,它将清除视图并仅显示结果,反之亦然。 Resultsfunc 只会在用户点击搜索按钮时显示 很可能需要在页面加载中填充网格,请参阅下面的答案,如果您对此答案有疑问,请提出更多问题! 【参考方案1】:

答案很可能是因为当您编辑参数时 - 调用 PageLoad 运行 PageLoad();函数(一种刷新页面)而不运行所有其他依赖 onclicks 的函数(填充表格)

为了解决这个问题,您很可能需要在页面加载中与函数一起填充网格视图,或者也只需从页面加载中调用函数。

使用公共静态变量将参数的当前值存储在您的 onclick(或设置参数的任何位置)中,然后将此参数传递给您的页面加载,并使用选定的当前参数填充数据..

【讨论】:

我认为你说的是​​正确的,在编辑值后它会刷新页面,并且我的任何 RowFilter 都会再次应用。我不确定如何使用页面加载,我在哪里可以找到该功能? Pageload 函数应该在你的 c# 类的开头,如果那是你保存它的地方 - protected void Page_Load(object sender, EventArgs e) 哦,对不起,这是一个 WFP,所以它是 Form_load,它只在程序启动时运行一次。 啊,好吧,它似乎在没有你的人口的情况下更新/刷新,所以我猜你也需要找到哪里并在那里填充你的网格。

以上是关于RowFilter:dataGridView 行在编辑后消失的主要内容,如果未能解决你的问题,请参考以下文章

C# DataGridView.DefaultView.RowFilter 与 charlist

如何让c#winform 根据datagridview数据筛选 filter

dataGridView 怎么显示指定的行,其他的不显示。希望有详细的代码,谢谢!

Winform 中怎样写代码,使文本框输入查询条件,显示在DataGridView中

DataGridView 常用方法

按布尔值过滤 DataGridView