Sharepoint WebParts

Прежде всего, просмотрите документацию по ключевому слову explicit .

Указывает, что конструктор или функция преобразования (начиная с C ++ 11) явные, то есть ее нельзя использовать для неявных преобразований и инициализации копирования.

blockquote>

По сути, явный конструктор копирования означает, что конструктор копирования не будет вызываться неявно.

Вам не нужно определять ваш конструктор копирования / перемещения, компилятор сгенерирует их для вас. То же самое для копирования / перемещения. Просто удалите их, и все будет в порядке.

class foo {
public:
    foo() = default;
    explicit foo(int val): _a(val) {}
    int a() const { return _a; }
    void a(int val) { _a = val; }
private:
    int _a{0};
};

5
задан 3 revs, 2 users 64% 1 October 2008 в 13:52
поделиться

2 ответа

Быстрое и грязное решение включить произвольную коммуникацию управления состоит в том, чтобы использовать рекурсивное управление находкой и события. Имейте поиск средств управления дерево управления типом управления для того, в чем они нуждаются и затем подписывают на публично выставленные события на управлении публикацией.

Я имею предыдущий, использовал прием, чтобы позволить стандартному управлению сервером найти друг друга при встраивании в системы CMS от различных поставщиков для предотвращения определенной коммуникации API полностью.

2
ответ дан 15 December 2019 в 06:38
поделиться

Я не вижу ничто плохого с webpart получение ссылки на webpart B и вызов общедоступных/внутренних методов/свойств или подписку обработчиков общественности/внутренним событиям. Одна точка упоминания при выполнении этого, хотя: EnsureChildControls. Я засвидетельствовал своими глазами один webpart, выполняемый ясный PreRender, в то время как другой webpart даже не выполнил CreateChildControls.

От webpart A, выберите свою ссылку на webpart B (в этом случае webpart B, имеет Календарь типа) как так:

     private Calendar _calendarWP = null;
    public Calendar CalendarWP
    {
      get
      {
          if (_calendarWP != null)
              return _calendarWP;
          else
              foreach (System.Web.UI.WebControls.WebParts.WebPartZone zone in this.WebPartManager.Zones)
                  foreach (System.Web.UI.WebControls.WebParts.WebPart webpart in zone.WebParts)
                      if (webpart is Calendar)
                      {
                          _calendarWP = (Calendar)webpart;
                          _calendarWP.EnsureChildControls();
                          return _calendarWP;
                      }
          return null;
      }
    }

Теперь можно сделать, вещам нравится, выбирают некоторые новые данные и обновляют Календарь как так:

         IEnumerable newData = SomeDataProvider.GetNewData(args);
        CalendarWP.someGridView.DataSource = newData;
        CalendarWP.someGridView.DataBind();

Или, возможно, позвольте webpart бросок ссылка на себя к webpart B, таким образом, это может использовать webpart A общедоступные/внутренние свойства для движения данных выборки для себя:

CalendarWP.UseWPAToFetchData(this);
1
ответ дан 15 December 2019 в 06:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: