通过从父控件检索条件,将网格数据保存在用户控件中



我有一个用户控件,我想在里面有一个网格,这样我就不必在每个页面上复制那个网格。除了排序、页面或任何回发操作外,用户控件会重新加载并丢失其数据源。我的计划是从父页面检索搜索条件(因为它已经从条件控件中获得了搜索条件)。这样,当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();
        }
    }

在你的usercontrol上创建一个事件处理程序'event EventHandler NeedSearchCriteria',它会在你的父页面上被触发

在你的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 && NeedSearchCriteria != null)
            {
                NeedSearchCriteria(this, new EventArgs());
            }
            return _criteria ?? new SearchCriteria();
        }
        set
        {
            _criteria = value;
        }
    }

最新更新