System.Data.EvaluateException: «Не удается найти столбец [NameID].» - PullRequest
0 голосов
/ 08 июня 2019

Я хотел использовать текстовое поле поиска для фильтрации сетки данных в Visual Studio, где вы будете вводить определенный первичный ключ (т. Е. NameID) для фильтрации результатов в таблице данных. Выдает ошибку, которая отмечена в заголовке.

Я попытался изменить код с NameID на [NameID], но это действие не сработало.

    private void TxtNamecSearch_TextChanged(object sender, EventArgs e)
    {
        DataView dtvNames = new DataView(dtNames);
        dtvNames.RowFilter = string.Format("Convert    
    (NameID,'System.String') Like '%{0}%'", TxtNameSearch.Text);     //   
    Errror occurs on this line
        NameDataGridView.DataSource = dtvNames;
    }

Я ожидаю ввести в текстовое поле первичный ключ [NameID], представляющий собой числовое число, и результаты в сетке данных будут автоматически фильтроваться по столбцу «NameID»

1 Ответ

0 голосов
/ 10 июня 2019

Я не добавил DataColumn с именем NameID в мою DataTable, так как имя этого столбца «NameID» извлекается из базы данных MySQL и заполняется в Datagridview. В результате мне пришлось изменить код, и этот код, ниже, теперь работает нормально: -

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading.Tasks;


public class Form1
{
private BindingSource NameBindingSource;
private void Form1_Load(System.Object sender, System.EventArgs e)
{
    // Create a new DataTable
    DataTable dtName = new DataTable();

    // Add the NameID column
    dtName.Columns.Add(new DataColumn("NameID"));

    // Create a new BindingSource
    NameBindingSource = new BindingSource();
    // Bind the DataTable to the BindingSource
    NameBindingSource.DataSource = dtName;

    // Bind the BindingSource to the DataGridView
    NameDataGridView.DataSource = NameBindingSource;
  }

  private void TxtNameSearch_TextChanged(System.Object sender, System.EventArgs e)
  {
        // Set the filter
        NameBindingSource.Filter = string.Format("Convert         
  (NameID, 'System.String') LIKE '%{0}%'", TxtNameSearch.Text);
  }
 }
...