【问题标题】:RowFilter: dataGridView rows disappearing after editRowFilter:dataGridView 行在编辑后消失
【发布时间】: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 只会在用户点击搜索按钮时显示
  • 很可能需要在页面加载中填充网格,请参阅下面的答案,如果您对此答案有疑问,请提出更多问题!

标签: c# datagridview rowfilter


【解决方案1】:

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

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

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

【讨论】:

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