从数据集的数据表中读取值

时间:2011-12-19 08:32:48

标签: c# datatable dataset

我想在文本框中的值之后搜索数据表的列。我想在ISBN-Numbers

之后搜索

这是我的表“书”:

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 :(得分:0)

您可以通过名称访问DataRow列,例如row["ISBN"]

答案 1 :(得分:0)

嘿伙计们我找到了解决方案。这个解决方案可能比needet更复杂,但我找不到另一个解决方案。几个小时后,我有以下代码:

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
        }
    }
}

我希望我可以帮助这个人