簡體   English   中英

'like' 運算符之前缺少操作數

[英]Missing operand before 'like' operator

            try
            {
                DataView dv = dt.DefaultView;
                dv.RowFilter =(" Like '%" + txtSearch.Text + "%' ");
            }
            catch(Exception ex)
            {
                MessageBox.Show(ex.Message);
            }

請幫助解決這個嘗試在 DGV 中搜索

那是因為你確實錯過了一些東西。 “dv”應該有我們想用“like”語句過濾掉的列。 您沒有提到要過濾的列。 例如:

$"[{columnWeWantToFilter}] Like '%{searchString}%'"

這是我剛剛編寫的代碼來證明我的觀點(是的,我們可以在這里改進很多東西,但這只是我想出的一個快速示例):

void Test()
    {
        var searchString = "do";
        var columnWeWantToFilter = "item";
        
        try
        {
            var dv = new DataView(InitializeDataView());
            dv.RowFilter = $"[{columnWeWantToFilter}] Like '%{searchString}%'"; //Before the like we place the column we want to use to filter

            //Here we print it just for testing
            foreach (DataRowView dataRow in dv)
            {
                Console.WriteLine(dataRow["item"]);
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }

    }

    //This code was copied from https://docs.microsoft.com/en-us/dotnet/api/system.data.dataview?view=net-5.0 just to initialize the DataView

    DataTable InitializeDataView()
    {
        // Create one DataTable with ONE COLUMN.
        var table = new DataTable("table");
        var colItem = new DataColumn("item", Type.GetType("System.String"));
        table.Columns.Add(colItem);

        // Add five items.
        DataRow NewRow;
        for (int i = 0; i < 5; i++)
        {
            NewRow = table.NewRow();
            NewRow["item"] = "Item " + i;
            table.Rows.Add(NewRow);
        }
        // Change the values in the table.
        table.AcceptChanges();
        table.Rows[0]["item"] = "cat";
        table.Rows[1]["item"] = "dog";
        table.AcceptChanges();


        return table;
    }

暫無
暫無

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

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