我的网页中做了一个用户控件用以显示注册者的信息info.ascx
其中添加了一个属性Infoid
然后再在我的网页userdetails.aspx
中加入一个DataGrid控件DG1
把DG1加入一列并绑定自定义列为ID 也就是表Users中的ID字段
把DG1设为分页
再把这一列转换为模版 并在Item项加入用户控件info.ascx控件名为info1
再从设计输入HTML格式添加info的Infoid添定ID项这是HTML绑定的写法
<ItemTemplate>
<asp:Label id=Label1 runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.ID") %>'></asp:Label>
<uc1:Info id="Info1" runat="server" Infoid='<%# DataBinder.Eval(Container, "DataItem.ID") %>'>
</uc1:Info>
</ItemTemplate>这是代码
private void Page_Load(object sender, System.EventArgs e)
{
 if(!this.IsPostBack)
 {
  DataBindDG();
 }}private void DataBindDG()
{
 OleDbConnection con=DB.createcon();
 OleDbDataAdapter odp=new OleDbDataAdapter();
 odp.SelectCommand =new OleDbCommand ("Select id from Users order by id desc",con);
 DataSet ds=new DataSet ();
 odp.Fill (ds,"user");
 this.DataGrid1.DataSource =ds.Tables["user"];
 this.DataGrid1.DataBind ();
}private void DataGrid1_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
{
 this.DataGrid1.CurrentPageIndex =e.NewPageIndex ;
 this.DataBindDG();
}info.ascx里面写的就是对传进来的infoid的值然读取表中的信息显示出来当程序远行的时候一切显示正带.用户自定义的控件也显示正常
可点击下一页的时候Label1显示的就正常
但是用户自定义控件却不显示相应的数据
调试的时候发现传进来的Infoid的值为空而不是相应绑定的值问题?为什么同样是绑定而单击下一页后Label1显示却是正常的
   而用户控件所绑定的值却为null
      要如何实现对用户自定义控件的绑定分页
谢谢大家

解决方案 »

  1.   

    页面代码没什么问题,应该是用户控件中属性传给控件的问题.
    可以参考如下做法:
    public string Infoid
    {
    get
    {
    return this.Label1.Text;//把Label换成你需要赋值的控件
    }
    set
    {
    this.Label1.Text=value;
    }
    }
      

  2.   

    private string infoid;
    public string Infoid
    {
     set
     {
     this.infoid =value.ToString();
     }
    }
    private void Page_Load(object sender, System.EventArgs e)
    {
      this.Label1.Text=this.infoid;
    }
    这是我的用户自定义控件的一部分
    我再说明一次
    在页面显示的时候用户自定义控件是显示正常的
    但在单击下一页的时候
    绑定的数据传到用户自定义控件的时候Infoid就等于null
    也就是没有值传入
    谢谢
      

  3.   

    参考一下
    http://singlepine.cnblogs.com/articles/281425.html
      

  4.   

    在 Page_Load和set中设两个断点就知道了,单击下一页的时候,先执行的是Page_Load,这时infoid为null,然后才是属性的赋值
      

  5.   

    singlepine(小山) ( 谢谢我要是不用用户自定义控件的话我的也可以显示
    但用自定义控件的时候第一次显示正常但单击下一页就不行了
    传给自定义控件的值就为null
      

  6.   

    自定义控件状态丢失,可以使用ViewState或Session保存数据源
      

  7.   

    本来控件开发非常容易。但是错误的误导太多,才使得它看上去好像很难。例如:如果在控件上有javascript脚本function,那么它的命名怎么确保和页面上其它地方或者自己被放2次以上的时候保持命名不冲突呢?一个控件,在页面以任何原因回发的时候(例如在其它任何地方放上一个button),完全保持自己的状态。等等,看到的那些破坏基本asp.net开发的控件的编程方法非常多。你找一本最基本的控件开发书,学学Label这种最基本的可靠的(完全符合基本原则的)控件,是它可以在页面上任何地方放任意多个,它会“独立”地正常地运行。小山的哪个例子不是普通的可靠的控件。
      

  8.   

    将你的控件类设为abstract试试
      

  9.   

    回复人: xiaohuasz() ( ) 信誉:100  2005-12-17 14:52:36  得分: 0  
     
     
       
    在 Page_Load和set中设两个断点就知道了,单击下一页的时候,先执行的是Page_Load,这时infoid为null,然后才是属性的赋值  
    好像是这样哦
    那要怎么办呢