Well, I'm using SharePoint as a file database, but I'm having trouble searching a document in folders. I'm using .NET CSOM.
protected void Pesquisar_Click(object sender, EventArgs e)
{
//Setando as credenciais
sharePointClient.DefinindoPropriedades();
//Recuperando o contexto
using (contextClient = sharePointClient.PegarContexto())
{
//Criando as colunas do DataTable
dt.Columns.Add(new DataColumn("filename"));
dt.Columns.Add("NomeArquivo", typeof(string));
dt.Columns.Add("Teste123", typeof(string));
dt.Columns.Add("Teste1234", typeof(string));
dt.Columns.Add("ServeUrl", typeof(string));
//Criando o objeto KeyWord, ele será responsavel pela pesquisa
KeywordQuery keywordQuery = new KeywordQuery(contextClient);
//Setando o path(Escopo que irá realizar a pesquisa) e pesquisando pelo titulo tambem (Title)...Ou pode optar pela pesquisa logo abaixo
//keywordQuery.QueryText = "path: nome do meu path* and title: EVENTO*";
var text = "";
var scope = "nome do scope";
keywordQuery.QueryText = String.Format("scope: {1}", text, scope);
//Ou podemos optar por essa pesquisa, que realizar a busca tanto pelo sharePoint quanto pelo OneDrive
//keywordQuery.QueryText = TxtCaixaPesquisa.Text;
//Criando o objeto Executador da pesquisa e passando o contexto
SearchExecutor searchExecutor = new SearchExecutor(contextClient);
//Executando a pesquisa e colocando em um array de resultado (Incluindo Arquivos (Files) ou Pastas (Folders) ) não há distinção.
ClientResult<ResultTableCollection> results = searchExecutor.ExecuteQuery(keywordQuery);
sharePointClient.ExecutarAcao(contextClient);
//OBS.: o resultado volta Pastas e Arquivos uma verificação possivel é utilizar um if no "FileType" pois pastas geralmente voltam com o type .HTML, já arquivos podem ser .Pdf .Doc .Txt
//Verificando se o arquivo está nulo
if (results != null)
{
foreach (var resultRow in results.Value[0].ResultRows)
{
if (resultRow["Path"].ToString().Contains("nome do scope"))
dt.Rows.Add("Arquivo.png", resultRow["Title"] + "." + resultRow["FileType"], resultRow["Path"], resultRow["Write"], resultRow["Path"]);
}
}
gridViewArquivos.DataSource = dt;
gridViewArquivos.DataBind();
}
}
He never finds anything!