Как сохранять переменные для каждого сеанса пользователя на странице

sharepoint.stackexchange https://sharepoint.stackexchange.com//questions/54322

Вопрос

Я использую три веб-части.Веб-часть A создает значение, когда пользователь нажимает кнопку в веб-части A.Веб-часть B использует это значение для создания списка элементов, которые пользователь может выбрать.WebPart C использует оба значения для создания строки в целях тестирования.

Веб-часть B использует этот список для заполнения раскрывающегося списка.При каждом изменении выбранного значения необходимо обновить веб-часть C.Это декларация элемента управления.

_documentTypeList = new DropDownList();
_documentTypeList.AutoPostBack = true;
this.Controls.Add(_documentTypeList);

Проблема здесь в том, что использование

_documentTypeList.AutoPostBack = true;

перезагружает всю страницу и сбрасывает значение в веб-части A на ноль.Как отправить новое значение веб-части B в веб-часть C, не теряя значения веб-части A?Все это происходит на 1 странице.

Это было полезно?

Решение

сохранение переменных состояния сеанса можно выполнить с помощью:

    public string Name
    {
        get
        {
            return Page.Session["SaveName"] as string;
        }
        set
        {
            Page.Session["SaveName"] = value;
        }
    }

это метод получения/установки для сохранения/получения состояния сеанса

чтобы использовать это, сделайте следующее:

это получает значение из состояния сеанса (должно быть в событии onPreRender, чтобы видеть переменные состояния сеанса)

txtName.Text = Name;

это переходит в состояние сеанса (может быть где угодно, где вы хотите сохранить состояние сеанса)

Name = txtName.Text;

для целочисленного значения:

изменить public string Name к public int Name и то же самое касается всего остального, например, логических значений и т. д.

поэтому для int это будет выглядеть так:

    public int Name
    {
        get
        {
            return Page.Session["SaveName"] as int;
        }
        set
        {
            Page.Session["SaveName"] = value;
        }
    }

Как отмечали другие, для передачи данных между веб-частью вы должны использовать метод iInterface:

предоставить (веб-часть отправляет данные) потребителя (веб-часть, использующая эти данные) и интерфейс, который является связью между веб-частями:

вышеизложенное будет работать на 100% и сохранит ваши значения при обратной передаче :)

на всякий случай, если вам это нужно;) iv разместил несколько ссылок на соединения ниже.

Проблемы с подключаемой веб-частью............................?

и

Соединение между двумя веб-частями

Надеюсь, поможет :)

Другие советы

Вы пробовали if (!Page.IsPostBack) { your code here }?

Вы пытались создать пользовательские соединения веб-части для вашей цели?Проходя ваше требование, может быть, это наиболее подходящий вариант

Ранее веб-части, где соединены в следующем порядке.

WebPart A => WebPart B
WebPart B => WebPart C
WebPart A => WebPart C
.

Это создало ошибку, если я хотел вызвать оба значения в WebPart C, когда я поменял значение в WebPart B. Всякий раз, когда значение WebPart B было изменено, потребовалось для перезагрузки страницы и для перезагрузки WebPart A., потому что WebPart A имел Значение, которое создается на взаимодействии пользователя, а не на странице Загрузка, значение было потеряно. WebPart B и WebPart C захватили функционируют без значения WebPart A. Если вы хотите сохранить соединение WebPart, как описано выше, пожалуйста, проверьте ответ PrevSharePointMaster.

Потому что в моем случае webpart a создает уникальный токен входа в систему, который я бы не позволил не сохранить его на странице. Я бы предпочел держать его с веб-сайтами. Для этого я изменил связь между ними. Вместо этого выше подключения я использовал следующее соединение.

WebPart A => WebPart B => WebPart C
.

WebPart B Сохраняет значение WebPart a и предоставляет ему вместе со своим собственным значением для WebPart C. Это как интерфейс WebParts B в настоящее время выглядит.

public interface IWebPartB
{
    string webPartAValue { get; }
    string webPartBValue { get; }
}
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с sharepoint.stackexchange
scroll top