错误:指定的方法不受支持?

11

当我尝试调用Find()时,我一直得到这个错误。

public void findTxt(string text)
    {
        BindingSource src = new BindingSource();
        src.DataSource = dataGridView1.DataSource;
        src.Position = src.Find("p_Name", text);    // Specified method is not supported

        if (src.Position == 0 && dataGridView1.Rows[0].Cells[2].Value.ToString() == text)
        {
            MessageBox.Show("Item found!!");
            dataGridView1.CurrentCell = dataGridView1.Rows[src.Position].Cells[2];
        }
        else if (src.Position == 0 && dataGridView1.Rows[0].Cells[2].Value.ToString() != text)
        {
            MessageBox.Show("Item not found!!");
        }
        else
        {
            MessageBox.Show("Item found!!");
            dataGridView1.CurrentCell = dataGridView1.Rows[src.Position].Cells[2];
        }

    }

编辑:

我在另一个表单中调用findText方法时会出现该错误。但是在主表单中调用此方法不会导致这样的错误。


抱歉,我不理解你的问题。请参考我的编辑。 - DanSogaard
3个回答

5

数据源决定支持哪些操作。我相信DataTable是唯一一个开箱即用支持此操作的。你可以通过以下方式进行检查(在这种情况下):

IBindingListView blv = yourDataSource as IBindingListView;
bool canSearch = blv != null && blv.SupportsSearching;

那么,底层数据源是什么呢?一个 List<T>(或者甚至是 BindingList<T>)并不会提供这个。


4

我在我的Asp.Net Core API中遇到了这个错误。这是由于Asp.Net Framework和.Net Core中API的差异引起的。我的应用程序是在Asp.Net Framework中,现在已经迁移到了.Net Core。下面的代码在编译时总是可以正常工作,但在运行时会失败,并抛出错误System.NotSupportedException:'指定的方法不受支持。'

Request.Body.Seek(0, SeekOrigin.Begin);
var streamReader = new StreamReader(Request.Body);
bodyData = await streamReader.ReadToEndAsync();

在此输入图片描述

要解决这个问题,你只需要按照以下方式进行更改。

bodyData = await new StreamReader(Request.Body, Encoding.Default).ReadToEndAsync();

同时,你还应该添加 System.Text 命名空间。

希望能对你有所帮助。


1
我也遇到了这个问题。尝试了2.5小时去读取请求的主体,但都没有成功。我不明白为什么这是唯一的方法。 - Măcelaru Tiberiu

1

尝试在Startup.cs中使用它

app.Use((context, next) =>{context.Request.EnableBuffering();return next();});

(该代码片段用于启用请求缓冲)

1
这似乎与问题没有任何关系,问题与“BindingSource.Find”的实现有关。 - Simon MᶜKenzie

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接