Автозаполнение текстового поля с MySQL в качестве базы данных - PullRequest
0 голосов
/ 14 июня 2011

Я пытаюсь выполнить автозаполнение текстового поля, используя приведенный ниже код, но выдает ошибку

ERROR :"Object reference not set to an instance of an object"

в этой строке:

for (int count = 0; count < dt.Rows.Count; count++)

Может кто-нибудь помочь мне?

private void tbMemberName_TextChanged_1(object sender, EventArgs e)
{
    tbMemberName.AutoCompleteMode = AutoCompleteMode.Suggest;
    tbMemberName.AutoCompleteSource = AutoCompleteSource.CustomSource;
    AutoCompleteStringCollection namec = new AutoCompleteStringCollection();

    //string search ="%"+ tbMemberName.Text +"%";
    //string @Name = tbMemberName.Text; 
    String sql =
        @"SELECT DISTINCT(member_Firstname +''+ member_Lastname) AS Name FROM members WHERE Name  Like '%'+tbMemberName.Text+'%'";
    DataTable dt = MemberFormHelper.GetData(sql, mf);
    if (dt.Rows.Count >= 0)
    {
        for (int count = 0; count < dt.Rows.Count; count++)
        {
            namec.Add(dt.Rows[count][Name].ToString());
        }
    }
    tbMemberName.AutoCompleteCustomSource = namec;
}

Ответы [ 3 ]

1 голос
/ 14 июня 2011

dt пусто, если не считать записи в таблице ur со следующим именем 'tbMemberName.Text') ... Полагаю, что tbMemberName это TextBox, так что если вы пытаетесь передать значение в строку sql вместо

@"SELECT DISTINCT(member_Firstname +''+ member_Lastname) AS Name FROM members WHERE Name Like '%'+tbMemberName.Text+'%'";

ты должен написать

@"SELECT DISTINCT(member_Firstname +''+ member_Lastname) AS Name FROM members WHERE Name Like '%"+tbMemberName.Text+"%'";

Вы только что неправильно использовали кавычки.

1 голос
/ 31 мая 2017

Я использовал этот код на основе кодов MSDN Microsoft и сэра П.К. я думаю, вы должны рассмотреть это

Сначала я вставляю эти коды в form_load
например:

this.cmbSchool.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
this.cmbSchool.AutoCompleteSource = AutoCompleteSource.CustomSource;

Чтобы получить доступ к свойству textaged в моем примере, я использовал comboBox вместо Textbox (я вставил их вне форм и использовал как универсальную переменную, чтобы позже получить доступ к combobox1_textchange)

AutoCompleteStringCollection collection = new AutoCompleteStringCollection();


если вы используете Mysql, я использовал это (также вставлено в form_load), чтобы сохранить данные в коллекции

        string querySelect = "SELECT * FROM tblschools";
        MySqlCommand commandSelect = new MySqlCommand(querySelect, connectionMain);
        MySqlDataReader reader = commandSelect.ExecuteReader();
        while (reader.Read())
        {
            string type = reader[1].ToString();
            cmbSchool.Items.Add(type); //data inserted in combobox list (dropdownstyle in c# dropdown) so that I can still type
            collection.Add(type); //data inserted in collection so that it will be autocomplete when you type keywords
        }
        reader.Close();

Тогда последний шаг - я вставил этот код в cmbSchool_TextChanged

this.cmbSchool.AutoCompleteCustomSource = collection; //everytime you type it will initiate and gather data from the collection

P.S. я впервые пишу извините за мои объяснения и плохое кодирование, но надеюсь, что это поможет

0 голосов
/ 14 июня 2011

Я думаю, что DT должен быть нулевым, и на самом деле это строка над циклом for, который завершается ошибкой

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...