#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;
}
}