Ошибка: указанный метод не поддерживается?

Я получаю эту ошибку, когда пытаюсь вызвать 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 из другой формы, однако вызов этого метода из основной формы не приводит к такой ошибке.

3 ответа

Решение

Это зависит от основного источника данных, какие операции он поддерживает. я полагаю, что DataTable это единственный, который из коробки поддерживает это. Вы можете проверить (в этом случае) через:

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

Так; что является основным источником данных? List<T> (или даже BindingList<T>) не предоставит это.

У меня была эта ошибка в моем Asp.Net Core API. Это было из-за разницы API в Asp.Net Framework и.Net Core. Мое приложение было в Asp.Net Framework, и я перенес его на.Net Core. Приведенный ниже код всегда будет работать нормально во время компиляции, но во время выполнения он не работал и выдавал ошибку System.NotSupportedException: 'Specified method is not supported.'

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 Пространство имен.

Надеюсь, это поможет.

Попробуйте использовать его в Startup.cs

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

Другие вопросы по тегам