我的程序运行,客户端输入他要查找的内容并在SQL数据库中搜索它。当他点击搜索时,它会出现在datagridview中。
我希望客户输入任何单词,单词的开头或结尾,而不是查看一列,它将在整个表格中查找。
我该如何编程?
clsdatasource.search获取文本框中的内容并将其存储在变量中。
{{1}}
我尝试了什么:
{{1}}
答案 0 :(得分:0)
试试这个:
public partial class Form1 : Form
{
DataGridView dataGridView;
DataTable dataTable;
DataView dataView;
TextBox textBoxSearch;
public Form1()
{
//InitializeComponent();
Width = 400;
dataGridView = new DataGridView { Parent = this, Dock = DockStyle.Top };
textBoxSearch = new TextBox { Parent = this, Top = 200 };
textBoxSearch.TextChanged += TextBoxSearch_TextChanged;
dataTable = new DataTable();
dataTable.Columns.Add("Id", typeof(int));
dataTable.Columns.Add("Name", typeof(string));
dataTable.Columns.Add("BirthDate", typeof(DateTime));
dataTable.Rows.Add(1, "Bob", new DateTime(2001, 01, 01));
dataTable.Rows.Add(2, "John", new DateTime(1999, 09, 09));
dataTable.Rows.Add(3, "Alice", new DateTime(2002, 02, 02));
dataView = new DataView(dataTable);
dataGridView.DataSource = dataView;
}
private void TextBoxSearch_TextChanged(object sender, EventArgs e)
{
var text = textBoxSearch.Text;
var values = dataTable.Columns
.OfType<DataColumn>()
.Select(c => "Convert([" + c.ColumnName + "], System.String)")
.Select(c => c + " like '%" + text + "%'");
var filter = string.Join(" or ", values);
dataView.RowFilter = filter;
}
}
要搜索不同类型的所有列,我将它们转换为字符串。然后使用like
运算符。最后,与or
结合使用。