Чтение значений из набора данных из набора данных - PullRequest
0 голосов
/ 19 декабря 2011

Я хочу найти столбец таблицы данных после значений из текстового поля.Я хочу найти ISBN-номера

Это моя таблица "Книга":

DataColumn bookName = new DataColumn("BookName", typeof(string));
DataColumn bookId = new DataColumn("BookId", typeof(int));
DataColumn isbn = new DataColumn("ISBN", typeof(string)); //should be an EAN-13
 Barcodeenter code here

DataColumn book_authorId = new DataColumn("Book_AuthorId", typeof(int));
DataColumn bookprice = new DataColumn("Price", typeof(decimal));
DataColumn authorName = new DataColumn("AuthorName", typeof(string));
DataColumn authorId = new DataColumn("AuthorId", typeof(int));
DataColumn geschlecht = new DataColumn("Geschlecht", typeof(string));

Теперь, как я могу искать только в isbn, не получая значений из всей таблицы?В списке я хочу иметь вывод.Там я хочу получить все значения из книги, где номер ISBN содержит текст из текстового поля.

Мой код, который я теперь должен искать после isbn, следующий:

  string isbn = _tbIsbnSuche.Text;
            string result = String.Empty;
            string file = _tempPath + @"\book_authorData.xml";
            XmlTextReader r = new XmlTextReader(file);
            if (isbn != String.Empty)
            {
                _lbInformation.Text = String.Empty;
                _lBdatenOutput.BackColor = Color.LightGoldenrodYellow;
                _lBdatenOutput.Items.Clear();
                _lBdatenOutput.Items.Insert(0, "Please Wait!");
                _lBdatenOutput.Items.Insert(1, "Gefundene ISBN-Nummern:");
                while (r.Read())
                {
                    if (r.Value.Trim().IndexOf(isbn) != -1 && r.Value.Trim().Contains("-") && r.Value.Length >= 13)
                    {
                        _lBdatenOutput.Items.Add(r.Value.Trim());
                    }
                }
                tim.Enabled = true;
            }
            else
            {
                _lbInformation.ForeColor = Color.Red;
                _lbInformation.Text = _suchfehler;
            }
            //Wenn keine Datensätze gefunden wurden
            if (_lBdatenOutput.Items.Count == 2)
            {
                tim.Enabled = true;
                _lBdatenOutput.BackColor = Color.OldLace;
                _lBdatenOutput.Items.Add(String.Concat("Es wurden keine Bücher welche in der ISBN-Nummer die Zeichenfolge ", "\"", isbn, "\"", " enthalten gefunden"));

            }

Но при этом выполняется поиск по всему набору данных, и когда у меня есть значение, которое в другом поле совпадает со строкой поиска, оно также появляется в результатах поиска.

Ответы [ 2 ]

0 голосов
/ 23 декабря 2011

Эй, ребята, я нашел решение.Это решение может быть более сложным, чем необходимость, но я не смог найти другое решение.Через несколько часов я получил следующий код:

string _seperator1 = "-------------------------------------------------------------------------------------------------------------------------------- \n"; 
string isbn = _tbIsbnSuche.Text;
DataView custView = new DataView(_dset.Tables["Book"], "", "ISBN", DataViewRowState.CurrentRows);
{
    _lBdatenOutput.Items.Clear(); //Delete existing Objects from the Output
    foreach (DataRowView myDRV in custView)
    {
        DataRow dr = myDRV.Row;
        if((dr["ISBN"].ToString().IndexOf(isbn) >= 0))
        {
            foreach (DataColumn cl in custView.Table.Columns)
            {
                _lBdatenOutput.Items.Add("Spalten-Name:  " + " \t " + cl.ColumnName + " \t" + dr[cl]);
            }
            _lBdatenOutput.Items.Add(_seperator1); //Insert a seperator
        }
    }
}

Я надеюсь, что смогу помочь кому-нибудь с этим

0 голосов
/ 19 декабря 2011

Вы можете получить доступ к столбцу DataRow через имя, например, row["ISBN"]

...