проблема с автозаполнением поиска с linq и datagrid - PullRequest
0 голосов
/ 26 февраля 2011

Я хотел бы выполнить поиск, который заполняет результат в Gridview с помощью LINQ.

Это код до того, как я использовал Linq, который отлично работает:

    foreach (DataRow dr in dt.Select("Name like  '" + txtSearch.Text + "%'"))
        {
            dtable.ImportRow(dr);
        }

В своем коде linq я использовал bsUser в качестве источника привязки.

 private void txtSearch_TextChanged(object sender, EventArgs e)
    {

        string input = txtSearch.Text.Trim().ToLower();
        if (input.Length <= 0) return;

        IList<User> u = (bsUser.Filter? select?
                        .Where(x => (x.Name.ToLower().StartsWith(input) 
                        && (x.RoleId == (int)cbRole.SelectedValue))).ToList());

        bsUser.DataSource = u;            

    }

У меня проблема в том, что если u возвращает 0 строк, то у моего Gridview, привязанного к bsUser, больше не будет данных. datasource.count() = 0

Может ли кто-нибудь дать мне обходной путь или совет, как мне справиться с этим?

1 Ответ

0 голосов
/ 26 февраля 2011

привет, я думаю, что сделал это, используя этот способ. Хорошо выглядит, хотя ..

  private void txtSearch_TextChanged(object sender, EventArgs e)
    {
        string input = txtSearch.Text.Trim().ToLower();
        if (input.Length > 0)
            bsUser.Filter = "Name like '" + input + "%' AND RoleId = '" + (int)cbRoleSearch.SelectedValue + "'";
        else
            FilterCBRoleSearch(Convert.ToInt16(cbRoleSearch.SelectedValue));
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...