2014-06-28 138 views
2

可能是我错过了一些重要的事情,以便根据需求正确实施CustomControl或缺乏知识。其实我已创建CustomControl(.dll)搜索目的有3个下拉框(从数据库填充),1个文本框和搜索按钮,选择适当的过滤条件后用户点击搜索按钮和简单的网格视图出现。我的问题是我不想在每个帖子后面填写CustomControl中的下拉框(从页面启动)。如何处理ASP.net中的回传自定义控件

+2

你是否在'Page_Load'的控件上检查'IsPostback'属性? – Tim

+0

我没有得到IsPostback属性,我实现了override void OnInit(EventArgs e)& override void CreateChildControls() –

回答

1

当你在不能当场Page你可以使用这个全局参数的地方:

System.Web.HttpContext.Current 

现在,从使得你可以在它的可用获得Page

Page page = HttpContext.Current.Handler as Page; 

if (page != null && page.IsPostBack) 
{ 

} 

或您可以使用表格和回邮价格

System.Web.HttpContext.Current.Request.Form 

并检查表单是否有值,然后可能回发。

只是注意,总是检查System.Web.HttpContext.Current不使用它之前空,因为如果你从一个线程调用它并没有可用的页面,然后是null

+0

Hi Aristos!感谢您的回答,现在我得到PostBack,但我的问题是,第二次CreateChildControls()调用时,如果不在下拉框中加载值,它会丢失。 –

+0

@VishwanathMishra也许那么这个控件的视图状态在他们使用它时被禁用。 (或者你没有保存viewstate这个控件) – Aristos

+0

谢谢了,这是我的错误。 –