过滤DataGridView - 奇怪的行为

时间:2014-11-14 22:25:19

标签: c# winforms datagridview

我想在表示文件编号的选定树节点的值上过滤我的DataGridView,即.85,200,404.005等...

我开始时:

bs.Filter = "FMFileNumber = " 
          + e.Node.Text.Substring(0, e.Node.Text.IndexOf(" - ")).ToString();

但当值为整数时,这给了我以下异常(不知道为什么它首先被视为整数):

{"Cannot perform '=' operation on System.String and System.Int32."}

我在这里的一个博客上看到要在过滤器内转换,所以我改为:

bs.Filter = string.Format("FMFileNumber =  convert({0}, System.String)",
                    e.Node.Text.Substring(0, e.Node.Text.IndexOf("  - ")).ToString());

这对于带有小数点左边的数字的值似乎没有用,但对于带有小数的值则不行。在后一种情况下,我得到了一个空白的数据网格视图。

为什么呢?有更可靠的过滤方法吗?

        getFileAndColumns();
        BindingSource bs = new BindingSource();
        dgvColumns.DataSource = tbltAttributes;
        bs.DataSource = dgvColumns.DataSource;
        bs.Filter = string.Format("FMFileNumber =  convert({0}, System.String)",
            e.Node.Text.Substring(0, e.Node.Text.IndexOf("  - ")).ToString());
        //bs.Filter = "FMFileNumber = " + e.Node.Text.Substring(0, e.Node.Text.IndexOf(" - ")).ToString();
        dgvColumns.DataSource = bs;

0 个答案:

没有答案