Хранение данных сетки в пользовательском контроле путем извлечения критериев из родительского - PullRequest
2 голосов
/ 04 ноября 2011

У меня есть пользовательский контроль, в котором я хочу, чтобы сетка была внутри, поэтому мне не нужно дублировать эту сетку на каждой странице.За исключением случаев, когда я сортирую, страница или что-то, что отправляет сообщение обратно, пользовательский контроль перезагружается и теряет свой источник данных.Мой план состоит в том, чтобы получить критерии поиска с родительской страницы (поскольку она уже есть в элементах управления критериями).Таким образом, когда вызывается NeedDataSource, у него все еще есть критерии для передачи правильных результатов.

Как мне получить, где вы видите SuperSearch, какой бы страницей не был родитель, как StateToState.

    public SearchCriteria SearchCriteria
    {
        get
        {
            Page parent = this.Page;
            if (parent != null)
            {
                var superSearch = parent as SuperSearch;
                if (superSearch != null) return superSearch.SearchCriteria;
            }

            return new SearchCriteria();
        }
    }

1 Ответ

2 голосов
/ 30 ноября 2011

Создайте обработчик события 'EventHandler NeedSearchCriteria' в вашем пользовательском контроле, который запускается на вашей родительской странице

На вашей странице aspx:

<UC:Grid runat="server" ID="ucGrid" OnNeedSearchCriteria="ucGrid_OnNeedSearchCriteria" />

В коде:

public void ucGrid_OnNeedSearchCriteria(object sender, EventArgs e)  
{  
  ucGrid.Criteria = Criteria;    
}

И на коде управления пользователя позади:

    public event EventHandler NeedSearchCriteria;

    private SearchCriteria _criteria;
    public SearchCriteria Criteria
    {
        get
        {
            if (_criteria == null && NeedSearchCriteria != null)
            {
                NeedSearchCriteria(this, new EventArgs());
            }
            return _criteria ?? new SearchCriteria();
        }
        set
        {
            _criteria = value;
        }
    }
...