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