'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;
}
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;
}