Возврат всей строки из поиска по одному слову и недоступного кода - PullRequest
0 голосов
/ 27 октября 2018

У меня проблемы с этим кодом. Возвращает только первое слово в строке. Мне нужна вся строка, возвращаемая в Column, если кто-то вводит одно или оба слова плюс только несколько символов в строке.

Поиск выполняется в TextBox с первого DataGridView Column в. Это список коллекции, сохраненный в файле XML, загруженном в DataGridView.

Также у меня есть i++ в for (int i = 0; i < row.Cells.Count; i++), который утверждает, что он недоступен.
Я тоже не уверен, почему.

Это просто список привязок как коллекция.

Изображение приложения WinForms

//Search DataGridview Button 
private void button3_Click(object sender, EventArgs e)
{
    string searchValue = searchtextBox.Text.ToLower(); /
    dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;

    try 
    {
        bool valueResult = false;
        foreach (DataGridViewRow row in dataGridView1.Rows)
        {
            for (int i = 0; i < row.Cells.Count; i++)
            {
                //if (row.Cells[0].Value != null && row.Cells[0].Value.ToString().ToLower().Equals(searchValue))
                if (row.Cells[i].Value != null && row.Cells[i].Value.ToString().ToLower().Contains(searchValue))
                {
                    int rowIndex = row.Index;
                    dataGridView1.Rows[rowIndex].Selected = true;
                    valueResult = true;
                    searchResults.Text += "=> " + searchValue + " " + Environment.NewLine.Trim();
                }
                break;         
            }
        }

        if (!valueResult)
        {
            MessageBox.Show("Unable to find " + searchtextBox.Text, "Not Found", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);
            return;
        }
    }
    catch (Exception exc)box
    {
        MessageBox.Show(exc.Message);
    }         
}

1 Ответ

0 голосов
/ 27 октября 2018

Удален разрыв и исправлен скрытый код на i++, а удалено searchValue заменено на row.Cells[0].Value.
Я думал, что это searchValue и проблема с разрывом.

Спасибо всем, кто прояснил проблему.

//Search DataGridview Button 
private void button3_Click(object sender, EventArgs e)
{
    string searchValue = searchtextBox.Text.ToLower(); //simple search Full row from text box with button
    dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;

    try //try to run the following code
    {
        bool valueResult = false;
        foreach (DataGridViewRow row in dataGridView1.Rows)
        {
            //i++
            for (int i = 0; i < row.Cells.Count; i++)//for loop to enable iteration throught the gridview rows
            {
                //if (row.Cells[0].Value != null && row.Cells[0].Value.ToString().ToLower().Equals(searchValue))

                if (row.Cells[i].Value != null && row.Cells[i].Value.ToString().ToLower().Contains(searchValue))
                {
                    int rowIndex = row.Index;
                    dataGridView1.Rows[rowIndex].Selected = true;
                    valueResult = true;

                    searchResults.Text += "=> " + row.Cells[i].Value + " " + Environment.NewLine.Trim();//outputs search results to multi line textbox separated by commas and trimmed white space of   
                }
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...