asp:新数据源设置时不清除转发器项目

时间:2014-10-14 17:34:35

标签: c# asp.net asprepeater

我有一个表单,我在其中放置一个转发器控件并将其绑定在pageLoad上,它按预期绑定。

我有一个dropDownList,当我从中选择一个值时,我想清除转发器 dataSource 并在代码隐藏的dropDown_SelectedIndexChanged事件处理程序中重新绑定它。

我将转发器数据源设置为null,然后使用新数据源重新绑定它不会反映更改,它会显示第一个绑定值。

这是我的代码:

protected void Page_Load(object sender, EventArgs e)
{
   if (IsPostBack)
        return;

   //Populate the drop down
   PopulateLocationDropdown();

   if (Request.QueryString["locationID"] != null)
   {
       int locationID=Request.QueryString["locationID"];

       //Clear repeater 
       rpt_Displaytheater.DataSource = null;
       rpt_Displaytheater.DataBind();

       //Rebind repeater
       rpt_Displaytheater.DataSource = GetTheaterDataSet(locationID);
       rpt_Displaytheater.DataBind();
   }
}

当dropDown selectionChanged

protected void ddlLocation_SelectedIndexChanged(object sender, EventArgs e)
{
   int locationID=ddlLocation.SelectedValue.ToInt();

   //Clear repeater 
   rpt_Displaytheater.DataSource = null;
   rpt_Displaytheater.DataBind();

   //Rebind repeater
   rpt_Displaytheater.DataSource = GetTheaterDataSet(locationID);
   rpt_Displaytheater.DataBind();
}

修改

这是我的下拉列表:

<asp:DropDownList ID="ddlLocation" DataTextField="LocationName" DataValueField="Record_Id" runat="server" CssClass="textbox_230"
                                            OnSelectedIndexChanged="ddlLocation_SelectedIndexChanged" AutoPostBack="True">
                                        </asp:DropDownList>

这是我的转发器:

 <asp:Repeater ID="rpt_Displaytheater" runat="server"
            OnItemCommand="rpt_Displaytheater_ItemCommand">
            <ItemTemplate>
                <div class="TheaterListing" style="background: #FFF;">
                    <div class="TheaterName">
                        <div class="Theaterhead">
                            <asp:Label ID="lblTheaterID" runat="server" Visible="false" Text='<%# DataBinder.Eval(Container.DataItem, "Record_Id") %>'></asp:Label>
                            <asp:LinkButton ID="lnkbtnTheaterName" runat="server" Style="color: #000; font-weight: bold" Text='<%# DataBinder.Eval(Container.DataItem, "Theatre_Name") %>'></asp:LinkButton>
                        </div>
                    </div>
                    <div class="showlist">
                        <%-- show time repeater-Movies Tab --%>
                        <asp:Repeater ID="rpt_showtime" runat="server">
                            <ItemTemplate>
                                <ul style="padding-left: 10px; margin: -18px 0 0 163px;">
                                    <li class="fl" style="font-weight: bold; padding-left: 8px;">
                                        <asp:LinkButton ID="lnk_showtime" CommandName="Showtime" runat="server" CssClass="txtstyle1"
                                            Text='<%# DataBinder.Eval(Container.DataItem, "Time_From") %>'></asp:LinkButton>
                                    </li>
                                </ul>
                            </ItemTemplate>
                        </asp:Repeater>
                        <%-- show time repeater-Movies Tab --%>
                        <%--<asp:LinkButton ID="LinkButton1" runat="server" style="color: #000;font-weight:bold" Text="10.00 AM"></asp:LinkButton>--%>
                    </div>
                </div>

                <br clear="all" />
            </ItemTemplate>
        </asp:Repeater>

我的问题是当我将转发器控件的dataSource重置为新的dataSource时,dropDown选择已更改,但更改未反映在转发器上,它只显示页面加载时的第一个有界值,我的代码是否错误

1 个答案:

答案 0 :(得分:2)

您需要刷新asp:updatepanel。

这可以通过致电yourPanel.Update()或将您的asp:updatepanel的UpdateMode设置为Always来实现。