list.Bind() не могу привязать файл

semafor

Client
Регистрация
27.12.2016
Сообщения
289
Благодарностей
404
Баллы
63
Добрый день! Не могу понять что не так — файл создается, но строка в него не добавляется. Предполагаю что проблема в привязке, но почему??? Уже все — глаз замылился, мозг взорвался, идеи кончились...

C#:
var level2 = project.Lists["level2"];
string path = project.Directory+@"\file.txt";
File.Create(path);
level2.Bind(path);

level2.Add("test");
 

TwistDanceR

Client
Регистрация
30.05.2019
Сообщения
479
Благодарностей
200
Баллы
43
Добрый день! Не могу понять что не так — файл создается, но строка в него не добавляется. Предполагаю что проблема в привязке, но почему??? Уже все — глаз замылился, мозг взорвался, идеи кончились...

C#:
var level2 = project.Lists["level2"];
string path = project.Directory+@"\file.txt";
File.Create(path);
level2.Bind(path);

level2.Add("test");
level2 - это лист проекта. чтобы сохранилось - надо сохранять лист в файл в конце этого снипета или в следующем экшене.

А ещё при первом бинде лучше перезагрузить проект, чтобы не тупил.
 

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 518
Благодарностей
3 370
Баллы
113
Добрый день! Не могу понять что не так — файл создается, но строка в него не добавляется. Предполагаю что проблема в привязке, но почему??? Уже все — глаз замылился, мозг взорвался, идеи кончились...
Отладку используете? С ней могут быть проблемы.
 

semafor

Client
Регистрация
27.12.2016
Сообщения
289
Благодарностей
404
Баллы
63
level2 - это лист проекта. чтобы сохранилось - надо сохранять лист в файл в конце этого снипета или в следующем экшене.
А можно пример? Я предполагал, что привязка к файлу для того и нужна, чтобы изменения в списке проекта автоматически сохранялись в файл.
А ещё при первом бинде лучше перезагрузить проект, чтобы не тупил.
Опять же, задумка была использовании Bind-а в цикле — получил данные, создал файл, привязал к списку проекта, записал инфу в файл, получил другие данные и т.д. А если перегружать проект, то смысла в Bind уже нет...
Отладку используете? С ней могут быть проблемы.
Да, работал в PM.

В итоге, от бинда отказался:

C#:
var level2 = project.Lists["level2"];
string path = project.Directory+@"\file.txt";
string t = "test";

level2.Add(t);
File.WriteAllLines(path, level2);
 
Последнее редактирование:

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 518
Благодарностей
3 370
Баллы
113
В итоге, от бинда отказался:

C#:
var level2 = project.Lists["level2"];
string path = project.Directory+@"\file.txt";
string t = "test";

level2.Add(t);
File.WriteAllLines(path, level2);
Не делайте так, так как при сбросе таблицы из памяти сторонние изменения будут перезаписаны.

Есть таска по проблеме.
Переместите код в другой экшен, где не требуется отладка или откажитесь совсем от таблицы.
 

semafor

Client
Регистрация
27.12.2016
Сообщения
289
Благодарностей
404
Баллы
63
Не делайте так, так как при сбросе таблицы из памяти сторонние изменения будут перезаписаны.
А можно подробнее об этом? Како нибудь простенький пример или ссылку на почитать?
Полный сниппет выглядит так:
C#:
var level1 = project.Lists["level1"];
var level2 = project.Lists["level2"];

for(int i=0; i<level1.Count; i++)
{
    string name = level1.GetItem(i.ToString(), false);
    string path = project.Directory+@"\"+name+@"\level2_"+name+".txt";

    HtmlElementCollection hecol = instance.ActiveTab.FindElementsByXPath(@"//a[contains(text(), '"+name+"')]/following-sibling::ul/li/a");
   
    for(int j=0; j<hecol.Count; j++)
        {
            var he = hecol.GetByNumber(j);
            string attr = he.GetAttribute("innertext");
            level2.Add(attr);
        }
        //сохраняем список в файл
        File.WriteAllLines(path, level2);
        level2.Clear();
}
Может ли в этом контексте произойти указанная вами ситуация?
 

TwistDanceR

Client
Регистрация
30.05.2019
Сообщения
479
Благодарностей
200
Баллы
43
Может ли в этом контексте произойти указанная вами ситуация?
То же самое только в профиль. Без использования листов зеннки

C#:
List<string> level1 = new List<string>();
List<string> level2 = new List<string>();

for(int i=0; i<level1.Count; i++)
{
    string name = level1[i];
    string path = project.Directory+@"\"+name+@"\level2_"+name+".txt";

    HtmlElementCollection hecol = instance.ActiveTab.FindElementsByXPath(@"//a[contains(text(), '"+name+"')]/following-sibling::ul/li/a");

    foreach(HtmlElement el in hecol) {
          level2.Add(el.GetAttribute("innerText");
  }
   File.WriteAllLines(path, level2);
   level2.Clear();
}
 
  • Спасибо
Реакции: semafor

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