C# 如何在DataGgridView中搜索没有数据库的文件
我的搜索功能现在正在列表框中运行。。我正在将文件夹中的所有文件填充到列表框中。。我可以从列表框中相应地搜索文件名。但我真正的想法是从网格视图中搜索。因此,我需要您的帮助来修改此内容并在我的gridview中搜索。。我该怎么做呢。 需要根据我的列名搜索C# 如何在DataGgridView中搜索没有数据库的文件,c#,winforms,visual-studio-2010,search,datagridview,C#,Winforms,Visual Studio 2010,Search,Datagridview,我的搜索功能现在正在列表框中运行。。我正在将文件夹中的所有文件填充到列表框中。。我可以从列表框中相应地搜索文件名。但我真正的想法是从网格视图中搜索。因此,我需要您的帮助来修改此内容并在我的gridview中搜索。。我该怎么做呢。 需要根据我的列名搜索图纸编号 我的gridview快照,我需要搜索这些文件 用于在列表框内搜索的代码 代码段: private void SrchBtn_Click(object sender, EventArgs e) { Directo
图纸编号
我的gridview快照,我需要搜索这些文件
用于在列表框内搜索的代码
代码段:
private void SrchBtn_Click(object sender, EventArgs e)
{
DirectoryInfo di = new DirectoryInfo(@"C:\St\Fabrication\Draft");
FileInfo[] fi = di.GetFiles();
if (textBox1.Text != "")
{
string search = textBox1.Text;
lbxResults.Items.Clear();
foreach (FileInfo curFile in fi)
{
if (curFile.Name.ToUpper().IndexOf(search.ToUpper()) != -1)
{
lbxResults.Items.Add(curFile.Name);
}
textBox1.Clear();
textBox1.Focus();
}
}
}
能够从列表框中搜索
进入列表框的已搜索文件的快照
我需要将此搜索转换为我的gridview。我该怎么做以下是一个示例,用于检查匹配项并选择所有匹配的行。 注: 您所写的列名不包含空格 我显示标签中的匹配数 可以通过几个选项进行匹配。选择您需要的或给用户复选框
private void textBox1_TextChanged(object sender, EventArgs e)
{
string columnName = "filename";
bool partial = false; // full comparison or only a substring is searched
bool includeExtensions = true; // include the file extension in the search
bool ignoreCase = true; // make the search case-(in)sensitive
string search = textBox1.Text;
if (ignoreCase) search = search.ToLowerInvariant();
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
string v = dataGridView1.Rows[i].Cells[columnName].Value.ToString();
if (ignoreCase) v = v.ToLowerInvariant();
string f = includeExtensions ?
Path.GetFileName(v) : Path.GetFileNameWithoutExtension(v);
if (partial) dataGridView1.Rows[i].Selected = (f.IndexOf(search) >= 0);
else dataGridView1.Rows[i].Selected = (f == search);
}
label1.Text = dataGridView1.SelectedRows.Count.ToString() + " files found.";
}
private void textBox1\u TextChanged(对象发送者,事件参数e)
{
string columnName=“filename”;
bool partial=false;//完全比较或只搜索子字符串
bool includeExtensions=true;//在搜索中包括文件扩展名
bool ignoreCase=true;//使搜索区分大小写-(in)
字符串搜索=textBox1.Text;
if(ignoreCase)search=search.ToLowerInvariant();
对于(int i=0;i=0);
else dataGridView1.Rows[i].Selected=(f==search);
}
label1.Text=dataGridView1.SelectedRows.Count.ToString()+“找到文件。”;
}
在按钮单击事件上尝试此方法。这将检查文件是否存在于folderPath
变量中指定的文件夹路径中System.IO.Directory.GetFiles(字符串路径,字符串模式)
函数将在字符串匹配的情况下从文件夹中查找文件,并在绘图单元中指定值
string folderPath = @"C:\St\Fabrication\Draft";
for (int i = 0; dataGridView1.Rows.Count; i++)
{
string strSearch = string.Format("*{0}*", dataGridView1.Rows[i].Cells["Drawing_Number"].Value);
string[] arrFiles = System.IO.Directory.GetFiles(folderPath, strSearch);
if (arrFiles.Length > 0)
{
dataGridView1.Rows[i].Cells["Drawing"].Value = arrFiles[0];
}
}
我找到了答案。。
这是一件简单的事情
代码如下:
(dataGridView1.DataSource as DataTable).DefaultView.RowFilter
= string.Format(@"`Drawing Number` LIKE '%{0}%' OR `Release Path` LIKE '%{0}%'", textBox1.Text);
dataGridView1.Focus();
textBox1.Focus();
int rowCount = dataGridView1.BindingContext[dt].Count;
if (rowCount == 0)
{
MessageBox.Show("No results");
}
我从这个链接找到了帮助:你的应用程序是什么类型的?它是web应用程序还是桌面应用程序?@Christos desktop app如何在我的gridview中填充?您可以将所有信息(搜索结果或文件名)存储在不可见(或可见)列中。然后通过
行
按列索引枚举访问它,强制转换为类型(字符串
如果只是文件名),完成。@Sinatr我已经更新了我的代码,请确认。。我想将此列表框搜索升级到datagridsearch@TaW我无法改变这个问题,我只是添加了更多的细节和代码。。这样你就可以很容易地帮上忙了!!标签1始终显示找到的0个文件。即使文件在那里,它仍然显示0个文件。您是否检查了选项??文件名是什么?@对不起。。你能再来吗!!!我不明白你所说的选择。。你怎么能不理解代码中的‘bool’:‘bool partial=false;bool includeExtensions=true;bool ignoreCase=true`我把它们放在那里,这样你就可以更好地控制搜索的工作方式。如何使用它们由你决定。在我的测试程序中,我将它们耦合到复选框中,这样我就可以用各种方式进行测试。@StacyKeblerstrearch
显示的值是多少?确保它不应为空或null。当多个通配符放置错误或定义了一个或多个无效字符时,可能会发生此问题。也就是说,它应该是*文件名*
。但是,它不应该是**
或**MY_FILE
,其中*
是通配符。看看这篇文章和这篇文章。@Nimesh-u,你好,nohh。。那太好了:)