我在updatepanel上放了一个datalist再在datalist中嵌套了一个datalist,里面的datalist使用objectdatasource帮定,当我触发updatepanel更新页面时,报ObjectDataSource 控件“objDSWeekList”没有命名容器。确保在调用 DataBind 前将控件添加到该页中.是怎么回事啊?

解决方案 »

  1.   

    HTML部分<asp:ScriptManager runat="server" ID="sm">
        </asp:ScriptManager>
        <asp:UpdatePanel runat="server" ID="pnlte">
        <ContentTemplate>
            <asp:Button ID="btnPostBack" runat="server" Text="ButtonPostBack" Visible="False" OnClick="btnPostBack_Click" />
        </ContentTemplate>
        </asp:UpdatePanel>
        <a href="#" onclick="test()" style="color:#0050A0">testestewst</a>
        <asp:LinkButton ID="btnTest" CssClass="button_alink" runat="server" Text="test" PostBackUrl="~/_Test/Default.aspx"></asp:LinkButton>
        <div>
        <input type="button" value="test" onclick="test()" />
                  <asp:UpdatePanel id="pnlData" runat="server">
                  <contentTemplate>
    <asp:DataList id="DataListUser" runat="server" CssClass="table_layout_w100" OnItemDataBound="DataListUser_ItemDataBound">
    <ItemTemplate>
    <asp:HiddenField id="hfUserID" runat="server" Value='<%# Bind("ID") %>'></asp:HiddenField><asp:Label id="lblAllDay" runat="server"></asp:Label>
    <TABLE class="table_layout_w100"><TBODY><TR><TD style="HEIGHT: 18px" class="textBox_Display" align=left><asp:Label id="lblName" runat="server" CssClass="textBox_Display" Text='<%# Bind("Name") %>' Width=""></asp:Label></TD></TR><TR><TD>
    <asp:DataList id="DataListWeek" runat="server" CssClass="table_datelist" OnItemDataBound="DataListWeek_ItemDataBound" DataSourceID="objDSWeekList" RepeatDirection="Horizontal" >
    <ItemStyle BorderStyle="None" />
    <ItemTemplate>
    <asp:HiddenField id="hfDay" runat="server" Value='<%#  Bind ("day") %>'></asp:HiddenField></ItemTemplate><ItemStyle VerticalAlign="Top"></ItemStyle>
    </asp:DataList></TD></TR><TR>
    <TD style="WIDTH: 100%; "></TD></TR>
    </TBODY></TABLE>
                            <asp:ObjectDataSource id="objDSWeekList" runat="server" TypeName="DataList" SelectMethod="GetWeekScheduleList">
                                <SelectParameters>
                                    <asp:ControlParameter ControlID="hfUserID" Name="userID" PropertyName="Value" Type="String" />
                                    <asp:ControlParameter ControlID="hfDateTime" Name="date" PropertyName="Value" Type="DateTime" />
                                </SelectParameters>
                            </asp:ObjectDataSource> 
    </ItemTemplate>
    <ItemStyle Width="100%"></ItemStyle>
    </asp:DataList>
    <asp:ObjectDataSource id="ObjectDSScheduleList" runat="server"></asp:ObjectDataSource> <asp:HiddenField id="hfDateTime" runat="server"></asp:HiddenField> 
    </contenttemplate>
                  <triggers>
                    
                    <asp:AsyncPostBackTrigger ControlID="btnPostBack" EventName="Click"></asp:AsyncPostBackTrigger>
                  </triggers>
              </asp:UpdatePanel>c#部分:
    protected void Page_Load(object sender, EventArgs e)
    {
            this.hfDateTime.Value = DateTime.Today.ToShortDateString();
            DataTable dt = new DataTable();
            dt.Columns.Add("ID");
            dt.Columns.Add("Name");        DataRow dr = dt.NewRow();
            dr["ID"] = 1;
            dr["Name"] = "aaa";
            dt.Rows.Add(dr);        if (IsPostBack) 
            {
                dr = dt.NewRow();
                dr["ID"] = 2;
                dr["Name"] = "bbb";
                dt.Rows.Add(dr);
            }        this.DataListUser.DataSource = dt;
            this.DataListUser.DataBind();
    }