powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Перебор строк в DataView
8 сообщений из 8, страница 1 из 1
Перебор строк в DataView
    #32781807
S_Shmall
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день всем!
Необходимо загрузить данные из иерархического справочника в 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
Перебор строк в DataView
    #32782117
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хочу предупредить:
foreach(DataRowView Row in dvwTree)
переберет все строки игнорируя RowFilter
надо использовать:
for(i = 0; i < DataRowView.Count -1; i++)

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


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


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


В конце концов, я так и сделал.
Но, хотелось создать более универсальный код, а в этом случае необходимо заранее знать точный размер поля и положение необходимого символа (в данном случае '0') в строке.
...
Рейтинг: 0 / 0
Перебор строк в DataView
    #32782564
S_Shmall
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Лиман Артём 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
8 сообщений из 8, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Перебор строк в DataView
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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