Allora ho modificato il mio codice secondo le tue indicazioni.
Sono riuscito a creare il DataTable e sono riuscito a popolarlo con i dati presenti nel mio archivio. L'unica colonna che non mi carica è l'ultima e non so perchè...
Su excel è il risultato di questa formula "=+CONCATENA([@CATEGORY];"-";[@[NAME FILE]];"-";[@[KEY WORDS]])". Magari non funziona per questo motivo. Altre colonne sono il risultato di un concatena ma non in forma "matriciale".
La ricerca più o meno funziona ma solo per la prima colonna ID: se scrivo "3" mi trova la riga 3, ma non per dire la colonna 13 o la 33 o la 131 e così via.
Inoltre una volta cancellato il testo nella textbox, il datatable si svuota e non torna alla visualizzazione di default.
Tuttavia io vorrei cercare proprio nella collonna FILTRO DI RICERCA che contiene tutte le parole utili a farmi trovare il file che sto cercando.
Ho quindi provato a scrivere ma mi restituisce l'errore
private void textBox1_TextChanged(object sender, EventArgs e)
{
bs.Filter = "FILTRO DI RICERCA = '" + textBox1.Text + "'";
advancedDataGridView.Refresh();
}
CODICE COMPLETO
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Microsoft.Office.Interop.Excel;
using NPOI.SS.UserModel;
using Zuby.ADGV;
namespace ARCHIVIO_1._0
{
public partial class DATABASE : Form
{
Microsoft.Office.Interop.Excel.Application App;
Microsoft.Office.Interop.Excel.Workbook wb;
Microsoft.Office.Interop.Excel.Worksheet ws;
Microsoft.Office.Interop.Excel.Range Range;
Microsoft.Office.Interop.Excel.DataTable dt;
BindingSource bs = new BindingSource();
public DATABASE()
{
InitializeComponent();
int n;
//Create datatable
System.Data.DataTable dt = new System.Data.DataTable();
DataColumn dataColumn1 = new DataColumn("ID", System.Type.GetType("System.String"));
DataColumn dataColumn2 = new DataColumn("LINK", System.Type.GetType("System.String"));
DataColumn dataColumn3 = new DataColumn("CATEGORY", System.Type.GetType("System.String"));
DataColumn dataColumn4 = new DataColumn("NAME FILE", System.Type.GetType("System.String"));
DataColumn dataColumn5 = new DataColumn("KEY WORDS", System.Type.GetType("System.String"));
DataColumn dataColumn6 = new DataColumn("PERCORSO COMPLETO", System.Type.GetType("System.String"));
DataColumn dataColumn7 = new DataColumn("APPUNTI", System.Type.GetType("System.String"));
DataColumn dataColumn8 = new DataColumn("SUB 1", System.Type.GetType("System.String"));
DataColumn dataColumn9 = new DataColumn("SUB 2", System.Type.GetType("System.String"));
DataColumn dataColumn10 = new DataColumn("ESTENSIONE", System.Type.GetType("System.String"));
DataColumn dataColumn11 = new DataColumn("AUTORE", System.Type.GetType("System.String"));
DataColumn dataColumn12 = new DataColumn("TITOLO", System.Type.GetType("System.String"));
DataColumn dataColumn13 = new DataColumn("SITO", System.Type.GetType("System.String"));
DataColumn dataColumn14 = new DataColumn("FILTRO DI RICERCA", System.Type.GetType("System.String"));
dt.Columns.Add(dataColumn1);
dt.Columns.Add(dataColumn2);
dt.Columns.Add(dataColumn3);
dt.Columns.Add(dataColumn4);
dt.Columns.Add(dataColumn5);
dt.Columns.Add(dataColumn6);
dt.Columns.Add(dataColumn7);
dt.Columns.Add(dataColumn8);
dt.Columns.Add(dataColumn9);
dt.Columns.Add(dataColumn10);
dt.Columns.Add(dataColumn11);
dt.Columns.Add(dataColumn12);
dt.Columns.Add(dataColumn13);
dt.Columns.Add(dataColumn14);
//Load database_file excel
string Path = Directory.GetCurrentDirectory();
string strfileName;
strfileName = Convert.ToString(Path + @"\ARCHIVIO.xlsm");
//Check if database file exists
if (File.Exists(strfileName))
{
n = 1;
}
else
{
MessageBox.Show("Il database non è presente nella directory corrente.\n" + "Il database non è stato caricato.");
openFileDialog1.Filter = "Excel Office | *.xls; *.xlsx; *.xlsm";
openFileDialog1.ShowDialog();
strfileName = openFileDialog1.FileName;
}
if (strfileName != string.Empty)
{
App = new Microsoft.Office.Interop.Excel.Application();
wb = App.Workbooks.Open(strfileName);
ws = wb.Worksheets["ARCHIVIO"];
Range = ws.UsedRange;
int i = 0;
int Row;
for (Row = 8; Row <= Range.Rows.Count; Row++)
{
if (Range.Cells[Row, 3].Text != "")
{
i++;
dt.Rows.Add(i, Range.Cells[Row, 4].Text,
Range.Cells[Row, 5].Text,
Range.Cells[Row, 6].Text,
Range.Cells[Row, 7].Text,
Range.Cells[Row, 8].Text,
Range.Cells[Row, 9].Text,
Range.Cells[Row, 10].Text,
Range.Cells[Row, 11].Text,
Range.Cells[Row, 12].Text,
Range.Cells[Row, 13].Text,
Range.Cells[Row, 14].Text);
} //end if
else
{
//Nothing
}
num_record.Text = Convert.ToString("Record : " + i);
} //end for
} //end if
else
{
//Nothing
}
bs.DataSource = dt;
advancedDataGridView.DataSource = bs;
} //end form1
private void textBox1_TextChanged(object sender, EventArgs e)
{
bs.Filter = "ID = '" + textBox1.Text + "'";
advancedDataGridView.Refresh();
}