C# Page.DataBind需要注意的问题

  今天在制作一个用户自定义控件的时候,由于使用了Page.DataBind功能,导致所有的数据全部都绑定了同样的数据,自己对Page.DataBind了解不到家,调式了半天才发现是这个方法导致的问题,郁闷。。。

代码结构大概如下
后台代码
+展开
-C#
protected int blockId=0;
public void init(DataView dv){
   Repeater rp;
   for(int i=0;i<5;i++){
               rp = (Repeater)this.FindControl("rp" + i);//查找repeater
               dv.RowFilter="continentid=" + i;//设置RowFilter
               rp.DataSource=dv; rp.DataBind(); //绑定数据
   }
   this.DataBind();//绑定前台变量blockId,我以为只是绑定后台申明的全局变量,原来是连所有子控件,包括repeater都重新绑定了,所以最后repeater的数据源都一样,为最后一次的RowFileter好的数据
}


前台html代码
+展开
-HTML
<script type="text/javascript">
var blockId='<%#blockId %>';//=====全局变量绑定script




  以前给前台JS代码赋后台变量的值时,都是按照asp的方法,使用<%=变量名称%>。后面看了一个帖子,可以使用Page.DataBind来绑定后台变量的值,发现还蛮好用的,也符合asp.net的编程习惯,<%= %>此种形式的代码毕竟还是asp的形式。

  所以今天制作用户自定义控件的时候,也使用了Page.DataBind,结果repeater控件都绑定了一样的数据,原来调用Page.DataBind时将子控件也重新绑定了,由于数据源使用了DataView+RowFileter来生成,所以Page.DataBind后repeater重新绑定最后一次RowFilter好的数据,所以都是一样的,+_+。

加支付宝好友偷能量挖...


原创文章,转载请注明出处:C# Page.DataBind需要注意的问题

评论(1)Web开发网
阅读(157)喜欢(0)Asp.Net/C#/WCF