Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Перебор строк в DataView / 8 сообщений из 8, страница 1 из 1
15.11.2004, 11:14
    #32781807
S_Shmall
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перебор строк в DataView
Добрый день всем!
Необходимо загрузить данные из иерархического справочника в TreeView.
Имеется такой метод:

public void CreateNodes(string iParent, TreeNode pNode)
{
DataView dvwTree = new DataView(dataSet11.Tables[0]);
dvwTree.RowFilter = "PARENTID = " + iParent;

foreach(DataRowView Row in dvwTree)
{
string id = Row["ID"].ToString();
чего-то там...
}
}
Когда доходит до цикла foreach(), появляется сообщение об ошибке:
Cannot perform '=' operation on System.String and System.Int32.

PARENTID и ID столбцы в таблице базы данных на SQL-сервере, типа Char.

В чем проблема?
...
Рейтинг: 0 / 0
15.11.2004, 13:00
    #32782117
Worobjoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перебор строк в DataView
Хочу предупредить:
foreach(DataRowView Row in dvwTree)
переберет все строки игнорируя RowFilter
надо использовать:
for(i = 0; i < DataRowView.Count -1; i++)

ToString то-же не шел
пришлось CType...
...
Рейтинг: 0 / 0
15.11.2004, 13:01
    #32782119
Лиман Артём
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перебор строк в DataView
мне кажется, что нужно поменять d dvwTree.RowFilter = "PARENTID = " + iParent;
на
Код: plaintext
dvwTree.RowFilter = "PARENTID = '" + iParent+"'";
...
Рейтинг: 0 / 0
15.11.2004, 14:15
    #32782309
S_Shmall
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перебор строк в DataView
Лиман Артёммне кажется, что нужно поменять d dvwTree.RowFilter = "PARENTID = " + iParent;
на
Код: plaintext
dvwTree.RowFilter = "PARENTID = '" + iParent+"'";


В конце концов, я так и сделал.
Но, хотелось создать более универсальный код, а в этом случае необходимо заранее знать точный размер поля и положение необходимого символа (в данном случае '0') в строке.
...
Рейтинг: 0 / 0
15.11.2004, 14:24
    #32782351
S_Shmall
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перебор строк в DataView
Лиман Артёммне кажется, что нужно поменять d dvwTree.RowFilter = "PARENTID = " + iParent;
на
Код: plaintext
dvwTree.RowFilter = "PARENTID = '" + iParent+"'";


В конце концов, я так и сделал.
Но, хотелось создать более универсальный код, а в этом случае необходимо заранее знать точный размер поля и положение необходимого символа (в данном случае '0') в строке.
...
Рейтинг: 0 / 0
15.11.2004, 14:26
    #32782358
Лиман Артём
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перебор строк в DataView
S_Shmall
Но, хотелось создать более универсальный код, а в этом случае необходимо заранее знать точный размер поля и положение необходимого символа (в данном случае '0') в строке.
что-то ничего не понял...каой еще размер тебе надо знать, для чего? А положение сивола тут причем?
...
Рейтинг: 0 / 0
15.11.2004, 15:25
    #32782530
S_Shmall
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перебор строк в DataView
Лиман Артёммне кажется, что нужно поменять d dvwTree.RowFilter = "PARENTID = " + iParent;
на
Код: plaintext
dvwTree.RowFilter = "PARENTID = '" + iParent+"'";


В конце концов, я так и сделал.
Но, хотелось создать более универсальный код, а в этом случае необходимо заранее знать точный размер поля и положение необходимого символа (в данном случае '0') в строке.
...
Рейтинг: 0 / 0
15.11.2004, 15:35
    #32782564
S_Shmall
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перебор строк в DataView
Лиман Артём S_Shmall
Но, хотелось создать более универсальный код, а в этом случае необходимо заранее знать точный размер поля и положение необходимого символа (в данном случае '0') в строке.
что-то ничего не понял...каой еще размер тебе надо знать, для чего? А положение сивола тут причем?
Ну, вот конкретный пример.
Таблица реальная из "1С: Предприятия".
То самое поле parentid имеет в таблице размер 9 символов и тип Char. Причем понятно, что это поле ссылается на поле id (таблица иерархическая). Соответственно поле id также Char и [9]. Так вот этот самый код находится в середине этой строки.
Если делать выражение фильтра "PARENTID = '" + iParent + "'", то в результате при iParent = "0" это выражение выглядит так ParentID = 0.
Если (как в нашем случае) этот самый 0 в поле находится в середине строки, то выражение = false, и выборка, соответственно, пуста.
В конце концов, я сделал так "Trim(PARENTID) = '" + iParent.Trim() + "'"/ Вроде бы заработало, но не покидает смутное ощущение какой-то кривости кода.
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Перебор строк в DataView / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]