我做了一个控件,有一个ID属性,按传入的ID显示相关的数据
然后我把这控件拖进了datalist里,然后把ID属性得绑定
id='<%#DataBinder.Eval(Container.DataItem,"ID") %>' 
开始显示都正常但是当我页面被按钮点击做回置动作(就是postback)
把datalist的DataSource改变一下重新绑定以后,ID就传不到控件里去了!
怎么回事?急,请高手指教!

解决方案 »

  1.   

    datalist.databind()
    是放到if(!Page.IsPostBack)
    之中了还是之外了?
      

  2.   

    if ( !PostBack ){
      DataBinder();
    }
      

  3.   

    我一初始绑定是在
    if ( !isPostBack ){
     绑定datalist
    }
    //显示正常然后在一个button的Click方法里重新给datalist的datasource赋了值
    然后再重新绑定
    可是每次button被单击后也面返回,datalist里的控件ID接收不到新的值啊!
      
      

  4.   

    dataset是按用户点的button不停的变的!
    再说...每一个页面都保存一个dataset多耗内存啊!
      

  5.   

    楼上的兄弟INaming接口有什么作用,怎么用?
      

  6.   

    我这个大概不算是复合控件
    我那个控件写了个ID属性,按ID传入的值查出要显示的东西需要的东西
    我把它仍进页面的datalist模板里,然后把ID属性得绑定
    id='<%#DataBinder.Eval(Container.DataItem,"ID") %>' 就是我重新绑定的时候那个ID值传不进控件里,不知何故!
      

  7.   

    shui qian ding yi xia !
      

  8.   

    估计是更换datasource时出的问题。新dateasource里有id字段吗?
      

  9.   

    .aspx 部分!
    -------------
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>无标题页</title>
    </head>
    <body text="#00000">
        <form id="form1" runat="server">
        <div>
            <asp:DataList ID="DataList1" runat="server" RepeatColumns="4" RepeatDirection="Horizontal"
                Width="507px">
                <ItemTemplate>
                    <uc1:showitem ID="Showitem1" runat="server" itemID='<%#DataBinder.Eval(Container.DataItem,"ID") %>' />
                    <%--这就是用户控件,它有一个itemID属性(这个属性是自己写的),控件按接受到的itemID值来查出该显示的内容!--%>
                    <%--我将itemID属性绑定到了datalist的数据源上,第一次显示正常!--%>
                </ItemTemplate>
            </asp:DataList>
            </div>
            <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="按日期排序" Width="79px" />
             <%--这是一个按钮,用户点了以后,将会执行Button1_Click方法!--%>
             <%--点完这个按钮以后,datalist中的用户控件中的itemID属性就接受不到值了! --%>
        </form>
    </body>
    </html>
    -------------------------------------------------------------------------------
    .aspx.cs 部分
    -----------------
    public partial class ceshiwenjianjia_Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!this.IsPostBack)
            {
                this.DataList1.DataSource = operatedata.select_ID();
                this.DataList1.DataBind();
                //这里是对datalist.datasource的初始绑定!
                //operatedata.select_ID();是我自己写的类和方法,返回的是一个datatable
                //这里一切正常显示!
            }
        }
        protected void Button1_Click(object sender, EventArgs e)
        {
            this.DataList1.DataSource = operatedata.select_ID("data");
            this.DataList1.DataBind();
            //当用户点击页面上的按扭时,将datalist.datasource值重新绑定成另一个内容的datatable
            //operatedata.select_ID("data");是我自己写的类和方法,这个是带参数的方法
            //当点击到这的时候,用户控间中的itemID属性就接受不到值了!
        }
    }这个问题搞了N久了,高手快快出现,帮我解决一下啊`~~~狂晕!!!
      

  10.   

    楼上的意思是那个用户控件也要绑定一下?
    this.DataList1.Controls[0].DataBind();这样写?
    还是不行!
    应该怎么写?