我正在开发一个ASP .NET控件(适用于Blackbaud的NetCommunity系统),需要从数据库加载数据,然后根据已加载的数据更新某些控件的启用状态。根据微软的页面生命周期我可以看到,改变它的适当位置是在Page_PreRenderComplete事件期间,但这似乎不起作用,所以我猜我错了。但是,我不确定,因为我无法看到实际的数据库检索发生在哪里。我在这个控件上有两个下拉菜单,用于确定下面网格中显示的数据,并且网格需要根据内部数据更改其状态。我是否需要弄清楚如何尽早加载数据,然后进行状态更新,或者是否有某个地方我可以更新并且仍然可以正常渲染?
答案 0 :(得分:0)
Page_PreRenderComplete 为时已晚,无法操纵控件。通常,我们使用 PreRender 事件。
但是,如果您想要操作位于 GridView 中的控件,则需要使用GridView的RowDataBound事件,您可以使用 FindControl 找到控件。< / p>
例如,
protected void GridView1_RowDataBound(Object sender, GridViewRowEventArgs e)
{
if(e.Row.RowType == DataControlRowType.DataRow)
{
var textbox = e.Row.FindControl("MyTextBox") as TextBox;
}
}