请问用DataSource控件访问数据源的页面,它的数据绑定是在页面周期的什么阶段执行?

adodotnet 2008-09-27 02:19:03
过去用代码绑定时都是在Page_Load里if(!IsPostBack){ 读取数据库, GridView.DataSource=source;GridView.DataBind();}这样子。

那么,到了2.0的声明式指定数据源的时候,我突然就转不过弯来了,照理说从内部来讲应该也有上面这样的代码执行的吧?
不过,这样声明式绑定数据源控件后,这个绑定的动作是在什么阶段发生呢?

我手头上的书里没介绍的,问一下。谢谢。
...全文
112 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
JeffChung 2008-10-17
  • 打赏
  • 举报
回复
坐个板凳来听课
cteddy 2008-10-17
  • 打赏
  • 举报
回复
asp.net 2.0的“新”写法
是什么样的
请您不吝赐教啊
lovehongyun 2008-10-17
  • 打赏
  • 举报
回复
OnPagePreLoad
zero8500 2008-10-17
  • 打赏
  • 举报
回复
没什么关系吧...


学习
白云任去留 2008-10-17
  • 打赏
  • 举报
回复
看下
pcitlju 2008-09-27
  • 打赏
  • 举报
回复
一般牛人只是那个时间段内有空。
学习。
shadowjl 2008-09-27
  • 打赏
  • 举报
回复
学习
ustbwuyi 2008-09-27
  • 打赏
  • 举报
回复
sp1234也是个夜猫子,呵呵
  • 打赏
  • 举报
回复
而且也容易运行时错误,使用asp.net的写法可以纠正。 --> 而且也容易运行时错误,使用asp.net 2.0的“新”写法可以纠正。
  • 打赏
  • 举报
回复
所以只是做一个编辑 --> 所以只是做一个标记
  • 打赏
  • 举报
回复
如果你自己写一个逻辑,就是某些控件的事件触发另一些控件的改变,甚至是动态装入比较复杂的内容(当然之前清除旧的),那么你是在事件中就执行还是PreRender呢?应该在Prerender中。类似这样:


private bool RecreatePlace1Flag = false;

public void Textbox1_TextChanged(object sender,EventArgs e)
{
RecreatePlace1Flag = true;
}

public void DropdownList1_SelectedIndexChanged(object sender,EventArgs e)
{
RecreatePlace1Flag = true;
}

public void Page_PreRender((object sender,EventArgs e)
{
if(RecreatePlace1Flag)
DoCreatePlace1(true);
}

void DoCreatePlace1(bool 是否要读取后台数据)
{
PlaceHolder1.Controls.Clear();
.......
RecreatePlace1Flag = false; //不设置也可以,考虑到CreateChildControls等方法中可能调用,可以保留这句。
}

在page_load中或CreateChildControls中调用,都需要以DoCreatePlace1(false)调用。

由于多个事件可能连续触发对“重建PlaceHolder1内容”的要求,如果在事件中调用DoCreatePlace1就浪费了资源,刚创建的立刻就被反复清除。所以只是做一个编辑,拖到最后放在PreRender时才真正创建。
  • 打赏
  • 举报
回复
刚看到你的问题,我没有去找资料何时,我认为应该是在页面的PreRender阶段才读取后台数据。你可以实际去断点终端数据源的可扩展的事件处理,看看何时触发Select事件。

在回发的load阶段,使用数据源的数据绑定控件应该仅需要回复上一次页面输出时的控件状态,而并不是需要从后台读取数据(读取后台数据反而可能跟需要的正好不相符合)。例如数据绑定控件中的模板里边比较复杂时,肯定对这种“正好不相符”就更敏感,会出现那种报告说“相同ID号的ViewState与控件的类型不相符”的异常。网上绝大多数(超过90%)的没有使用数据源控件的“范例”代码都是在回发时在一个 if(!IsPostback) 判断力去绑定读取后台数据,这应该说是一种时间浪费,而且也容易运行时错误,使用asp.net的写法可以纠正。

62,244

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧