Синтаксис DataView для конструктора, чтобы получить все значения, которые похожи на строки - PullRequest
0 голосов
/ 19 декабря 2011

Как мне установить RowFilter в Dataview, чтобы я получал все значения из строки (в моем случае iSBN), которые похожи на строку поиска (в моем случае это isbn).попробовал следующий код, но это не удалось.Я думал, что это должен быть синтаксис SQL, но может я ошибаюсь.

Этот код работает.За то, что я тоже с нетерпением жду.

DataView custView = new DataView(_dset.Tables["Book"], "ISBN like '%isbn%'", "ISBN", DataViewRowState.CurrentRows); 

DataView custView = new DataView(_dset.Tables["Book"], "", "ISBN", DataViewRowState.CurrentRows);

_lBdatenOutput.Items.Clear();
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);
    }

И что мне нужно поместить в конструктор Dataview, чтобы я мог решить его с помощью следующего кода?

DataView custView = new DataView(_dset.Tables["Book"], "ISBN like '%isbn%'", "ISBN", DataViewRowState.CurrentRows);
        DataRowView[] foundRows = custView.FindRows(new object[] { isbn });
        if (foundRows.Length == 0)
        {
            _lBdatenOutput.Items.Clear();
            _lBdatenOutput.Items.Add("No matches found");
        }
        else
        {
            _lBdatenOutput.Items.Clear();
            foreach (DataRowView myDRV in foundRows)
            {
                DataRow dr = myDRV.Row;
                foreach (DataColumn cl in custView.Table.Columns)
                {
                    _lBdatenOutput.Items.Add("Spalten-Name:  " + " \t " + cl.ColumnName + " \t" + dr[cl]);
                }
            }
        }

Мой босс сел справа от меня и попробовал 1 час, так что было бы здорово, если бы вы нашли ответ

Спасибо за вашу помощь

1 Ответ

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

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

custView.RowFilter = "ISBN LIKE '%' + ISBN + '%'";

Если вместо этого у вас есть переменная с именем isbn и вы хотите найти все подходящие записи, будет работать следующее выражение:

custView.RowFilter = "ISBN LIKE '%" + isbn + "%'";

http://msdn.microsoft.com/en-us/library/system.data.datacolumn.expression.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...