Сохранение данных таблицы в usercontrol путем извлечения критериев из родительского

#user-controls #grid #radgrid

#пользовательские элементы управления #сетка #radgrid

Вопрос:

У меня есть usercontrol, в котором я хочу иметь сетку, поэтому мне не нужно дублировать эту сетку на каждой странице. За исключением случаев, когда я сортирую, просматриваю страницу или что-либо, что возвращает post, usercontrol перезагружается и теряет свой источник данных. Мой план состоит в том, чтобы получить критерии поиска с родительской страницы (поскольку они уже есть в элементах управления критериями). Таким образом, когда вызывается 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:

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

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

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

В коде, лежащем в основе:

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

И в коде usercontrol позади:

     public event EventHandler NeedSearchCriteria;

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