Список стал одной строкой

serg32

Client
Регистрация
27.02.2015
Сообщения
545
Благодарностей
15
Баллы
18
Здравствуйте
Подскажите как решить небольшое недоразумение связанное с записью в список данных из таблицы. У меня есть таблица с 3 столбцами, в первом и последнем всего 1 строка данных, а во втором столбце в ячейку через объеденение списка были закинуты множество строк, теперь если я их дергаю обратно из таблицы в список, то они также остаются как одним элементом, как будто это одна строка, хотя если открыть файл списка через обычный редактор, то он показывает что там 100+ строк и все данные записаны построчно. Как сделать из списка реально список с построчными данными, а не одну строку
 

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 767
Благодарностей
2 410
Баллы
113
Попытался реализовать написанный Вами функционал.
Ниже предоставлю пример, в котором все работает корректно.
Может это как-то поможет решить Вашу проблему.
C#:
IZennoList list1 = project.Lists["list1"]; // Список с данными
list1.Add("Строка 1");
list1.Add("Строка 2");
list1.Add("Строка 3");
IZennoList list2 = project.Lists["list2"]; // Сюда забросим результат


IZennoTable tb1 = project.Tables["tb1"]; // Табличка...

tb1.AddRow(new[]{"ячейка 1", string.Join(Environment.NewLine, list1.ToArray())}); // Взяли данные с списка 1 и добавили в табличку

string[] row = tb1.GetRow(0).ToArray(); // Взяли строку
list2.AddRange(row[1].Split(new[]{Environment.NewLine}, StringSplitOptions.None)); // Добавили с другой список
 

serg32

Client
Регистрация
27.02.2015
Сообщения
545
Благодарностей
15
Баллы
18
Попытался реализовать написанный Вами функционал.
Ниже предоставлю пример, в котором все работает корректно.
Может это как-то поможет решить Вашу проблему.
C#:
IZennoList list1 = project.Lists["list1"]; // Список с данными
list1.Add("Строка 1");
list1.Add("Строка 2");
list1.Add("Строка 3");
IZennoList list2 = project.Lists["list2"]; // Сюда забросим результат


IZennoTable tb1 = project.Tables["tb1"]; // Табличка...

tb1.AddRow(new[]{"ячейка 1", string.Join(Environment.NewLine, list1.ToArray())}); // Взяли данные с списка 1 и добавили в табличку

string[] row = tb1.GetRow(0).ToArray(); // Взяли строку
list2.AddRange(row[1].Split(new[]{Environment.NewLine}, StringSplitOptions.None)); // Добавили с другой список
Ой, мне прям даже как-то не удобно стало, что столько заморочки накидал, я думал как-то проще будет. У меня данные уже лежат в таблице, положил я туда их без проблем, они записались из нужного списка в нужную ячейку. Я не могу теперь только из этой ячейки получить нормальный вид данных, они не построчные а как одно целое, хотя внешне как-бы построчные, но если из списка взять экшном первую строку, то берется весь список целиком(

Они вот так выглядят даже внешне, но почему они считаются одной строкой...
 

Вложения

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 767
Благодарностей
2 410
Баллы
113
Ой, мне прям даже как-то не удобно стало, что столько заморочки накидал, я думал как-то проще будет. У меня данные уже лежат в таблице, положил я туда их без проблем, они записались из нужного списка в нужную ячейку. Я не могу теперь только из этой ячейки получить нормальный вид данных, они не построчные а как одно целое, хотя внешне как-бы построчные, но если из списка взять экшном первую строку, то берется весь список целиком(

Они вот так выглядят даже внешне, но почему они считаются одной строкой...
Все просто, данный код пришлось собрать чтобы заполнить списки/табличку данными, чтобы смоделировать ситуацию, о которой Вы говорите. Это пишется быстро :-)

Потому что как только Вы через объеденение списка соединили данные - они стали одной строкой.
После чего, если нужно снова превратить их в список - нужно выполнить обратную процедуру - разбить по разделителю и добавить в список (в моем коде - это последних 2 строки).
 

serg32

Client
Регистрация
27.02.2015
Сообщения
545
Благодарностей
15
Баллы
18
Все просто, данный код пришлось собрать чтобы заполнить списки/табличку данными, чтобы смоделировать ситуацию, о которой Вы говорите. Это пишется быстро :-)

Потому что как только Вы через объеденение списка соединили данные - они стали одной строкой.
После чего, если нужно снова превратить их в список - нужно выполнить обратную процедуру - разбить по разделителю и добавить в список (в моем коде - это последних 2 строки).
list2.AddRange(row[1].Split(new[]{Environment.NewLine}, StringSplitOptions.None)); // Добавили с другой список

Я использовал данный код, он взял строку из таблицы с нужным столбцом и также поместил в список одной срокой, результат 1 в 1 как у меня и был, они не стали построчные...
 

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 767
Благодарностей
2 410
Баллы
113
Это значит, что Вы где-то допускаете ошибку.
К сожалению данных с Ваших ответов недостаточно, чтобы понять где именно Вы ошиблись.
Возможно, есть смысл предоставить сюда часть шаблона (желательно сохранить совместимость с 5-й версией Зенно), который выполняет предложенный Вами функционал - после чего можно будет открыть его, и исправить ошибку, если такая имеется.
 

serg32

Client
Регистрация
27.02.2015
Сообщения
545
Благодарностей
15
Баллы
18
Возможно с самой таблицей что-то не так когда я в нее сохранил ячейку через объеденение списка. Во вложении файл таблицы, там 3 столбца. 1 и 3 столбцы там одна строка, а во втором много данных якобы построчные, но по факту не построчные, как вот этот момент обойти не понимаю, как со второй ячейки забрать данные построчно? Попробуйте пожалуйста с этой таблицей выполнить такой же код, результат будет такой же как у меня?
 

Вложения

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 767
Благодарностей
2 410
Баллы
113
Возможно с самой таблицей что-то не так когда я в нее сохранил ячейку через объеденение списка. Во вложении файл таблицы, там 3 столбца. 1 и 3 столбцы там одна строка, а во втором много данных якобы построчные, но по факту не построчные, как вот этот момент обойти не понимаю, как со второй ячейки забрать данные построчно? Попробуйте пожалуйста с этой таблицей выполнить такой же код, результат будет такой же как у меня?
Проверил.
Вот так работает правильно.
C#:
IZennoList list1 = project.Lists["list1"]; // Сюда сохраню результат
IZennoTable tb1 = project.Tables["tb1"]; // Таблица с данными
string[] row = tb1.GetRow(0).ToArray(); // Взяли 1 строку
list1.AddRange(row[1].Split(new[]{"\n"}, StringSplitOptions.None)); // Взяли 2 ячейку, разбили по разделителю, результат добавили в другой список
92392
 
  • Спасибо
Реакции: serg32

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)