簡體   English   中英

不轉換為 DataTable 的自動搜索過濾器

[英]auto search filter without convert to DataTable

嗨,我有一個文本框和一個 gridview。 我可以知道在文本框中輸入內容的最佳方法是什么,它會根據關鍵字(例如名稱)自動過濾 gridview

我已經成功地做到了,但只有當它轉換為dataTable時才有條件。
bsCourse.DataSource = linqHelper.ToDataTable(course.Get() as List<Course>); gvCourse.DataSource = bsCourse;

 private void txtSearch_TextChanged(object sender, EventArgs e)
    {
        string input = txtSearch.Text.Trim().ToLower();
        if (input.Length > 0)
            bsCourse.Filter = "Name like '" + input + "%'";
        else
            bsCourse.Filter = "";
    }

有沒有更好的不將數據轉換為自動過濾搜索的數據表? 我正在使用 linq 到 sql。 謝謝

我通常使用正則表達式過濾掉要隱藏的行。 在此示例中,我使用了 UltraGrid(Infragistics),但該過程可能與 gridview 的過程類似。

private void searchBox_TextChanged(object sender, EventArgs e)
{
    if (gridUsers.Rows.Count > 0)
    {
        foreach (UltraGridRow row in gridUsers.Rows)
        {
            if (Regex.IsMatch(row.Cells[1].Value.ToString(), searchBox.Text, RegexOptions.IgnoreCase))
            {
                gridUsers.Rows[indexCounter].Hidden = false;
            }
            else
            {
                gridUsers.Rows[indexCounter].Hidden = true;
            }
        }
    }
}

這可能不是最好的方法(尤其是對於有很多行的非常大的網格),但它對我有用。

您可以嘗試 Linq 方法,這樣:

List<Course> courses = (from i in course.Get() 
                        select new Course() {
                             // Set your property value here.
                        }).ToList();

bsCourse.DataSource = courses;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM