Не удается связать данные с набором данных при поиске из набора данных C #? - PullRequest
0 голосов
/ 25 июля 2011

Я загрузил данные из базы данных в набор данных с именем myDS . myDS содержит несколько таблиц.Затем я связал одну из этих таблиц (с именем Inventory ) в сетке данных с именем dataGridViewInventory , и все работало нормально.Тем не менее, когда я попытался выполнить поиск в таблице инвентаризации, а результат был привязан к datagridview dataGridViewInventory, но он оказался пустым.

Вот код поиска и привязки:

 DataRow[] filteredRows =
                        myDS.Tables["Inventory"].Select(string.Format("Make LIKE '%{0}%'", txtMake.Text.Trim()));

            DataSet tempTaskDS = new DataSet("tempCars");

            //tempTaskDS.Tables.Add("TempInv");

            DataTable DataTable2 = new DataTable("TempInv");
            // This makes the new DataTable have the same columns as the existing DataTable.
            DataTable2 = myDS.Tables["Inventory"].Clone(); 

            foreach (DataRow r in filteredRows)
            {
                DataTable2.ImportRow(r);
            }
            tempTaskDS.Tables.Add(DataTable2);

            dataGridViewInventory.DataSource = tempTaskDS.Tables["TempInv"];

Может кто-нибудьскажите, что я не так сделал, пожалуйста?

1 Ответ

0 голосов
/ 25 июля 2011

Найденное решение: Не нужно использовать временный набор данных, просто используйте BindingSource и привяжите к нему данные, а затем привяжите BindingSource к представлению данных. Код ниже:

DataRow[] filteredRows =
                        myDS.Tables["Inventory"].Select(string.Format("Make LIKE '%{0}%'", txtMake.Text.Trim()));

            DataTable DataTable2 = new DataTable("TempInv");
            // This makes the new DataTable have the same columns as the existing DataTable.
            DataTable2 = myDS.Tables["Inventory"].Clone(); 

            foreach (DataRow r in filteredRows)
            {
                DataTable2.ImportRow(r);
            }

            BindingSource bSource = new BindingSource();
            bSource.DataSource = DataTable2;

            dataGridViewInventory.DataSource = bSource;
...